Comment utiliser le mot-clé' variables ' dans gitlab-ci?yml?

je suis en train de faire usage de la variables: mot clé documenté dans la Documentation de Gitlab CI ici:

:https://docs.gitlab.com/ce/ci/yaml/README.html

variables

Cette fonctionnalité nécessite gitlab-coureur avec une version égale ou supérieure à 0.5.0.

GitLab CI vous permet d'ajouter à .gitlab-ci.variables yml qui sont définies dans l'environnement de compilation. Les variables sont stockées dans référentiel et sont destiné à stocker la configuration non sensible du projet, c'est-à-dire: RAILS_ENV ou DATABASE_URL.

variables:   
  DATABASE_URL: "postgres://postgres@postgres/my_database"

ces variables peuvent être utilisées plus tard dans toutes les commandes exécutées et script.

les variables définies par YAML sont aussi définies à tous les services créés conteneurs, permettant ainsi d'affiner.

quand je tente de l'utiliser, mes constructions ne s'exécutent pas et sont marquées réussies de toute façon, un bon signe de mauvais YAML. J'ai collé mon gitlab-ci.le contenu yml dans l'outil LINT dans la zone des paramètres et l'erreur de sortie est:

Statut: la syntaxe est incorrecte

Erreur: les variables d'emploi: paramètre inconnu PACKAGE_NAME

j'utilise ma syntaxe YAML comme dans les docs, mais ça ne marchera pas. Je suis incapable de trouver des bogues ouverts liés à cela. Ci-dessous sont mes versions actuelles et une version aseptisée de mon gitlab-ci.yml.

Gitlab Version: 7.13.2 Omnibus

Gitlab Runner Version: 0.5.2

gitlab-ci.yml (Expurgé)

types:
  - test
  - build

variables:
  PACKAGE_NAME: "awesome-django-app"
  PACKAGE_SUMMARY: "Awesome webapp backend."
  MAJOR_RELEASE: "1"
  MINOR_RELEASE: "0"
  PATCH_LEVEL: "0dev"
  DEV_DB_URL: "db"
  DEV_SERVER: "pydev.example.com"
  PROD_SERVER: "pyprod.example.com"
  TEST_SERVER: "pytest.example.com"

envtest:
  type: test
  script:
  - ". ./testbuild.sh"
  tags:
  - python2.7
  - postgres
  - linux
  except:
  - tags

buildrpm:
  type: build
  script:
  - mkdir -p ~/rpmbuild/SOURCES
  - mkdir -p ~/rpmbuild/SPECS
  - mkdir -p ~/tarbuild/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL
  - cp $PACKAGE_NAME.spec ~/rpmbuild/SPECS/.
  - cp -r * ~/tarbuild/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL/.
  - cd ~/tarbuild
  - tar -zcf ~/rpmbuild/SOURCES/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL.tar.gz *
  - cd ~
  - rm -Rf ~/tarbuild
  - rpmlint -i ~/rpmbuild/SPECS/$PACKAGE_NAME.spec
  - echo $CI_BUILD_ID
  - 'rpmbuild -ba ~/rpmbuild/SPECS/$PACKAGE_NAME.spec 
                    --define="_build_number $CI_BUILD_ID" 
                    --define="_python_version_min 2.7" 
                    --define="_version $MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL" 
                    --define="_package_name $PACKAGE_NAME" 
                    --define="_summary $SUMMARY"'
  - scp rpmbuild/RPMS/noarch/$PACKAGE_NAME-$MAJOR_RELEASE.$MINOR_RELEASE.$PATCH_LEVEL-$CI_BUILD_ID.noarch.rpm $DEV_SERVER:~/.
  tags:
  - python2.7
  - postgres
  - linux
  - rpm
  except:
  - tags

Question:

Comment puis-je l'utiliser correctement?

Informations Supplémentaires:

la suppression de cette section du fichier YAML fait que tout fonctionne et que le reste du fichier est en état de marche. (Bien sûr les variables non définies conduisent à des erreurs de script...)

même en réduisant simplement les variables pour les tests vers le bas à juste nom de PACKAGE_NAME provoque la même rupture.

20
demandé sur Connor Shea 2015-08-06 03:19:11

2 réponses

la réponse originale n'est plus correcte.

la documentation originale est maintenant en place, maintenant il y a aussi d'autres façons. Les Variables peuvent être créées à partir de L'interface graphique, de L'API ou en étant définies dans .gitlab-ci.yml.

https://docs.gitlab.com/ce/ci/variables/README.html

9
répondu Routhinator 2016-09-14 03:24:26

alors qu'il est dans la documentation, Je ne crois pas que les variables ont été incluses dans la dernière version de gitlab (7.13). La fonctionnalité de lecture des variables à partir des fichiers yaml a été introduite par un valider par ayufan