我们如何在gitlab-ci.yml中使用'variables'关键字?

Rou*_*tor 24 variables gitlab gitlab-ci

我想variables:在这里使用Gitlab CI文档中记录的关键字:

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

变量

此功能需要gitlab-runner版本等于或大于0.5.0.

GitLab CI允许您添加在构建环境中设置的.gitlab-ci.yml变量.变量存储在存储库中,用于存储非敏感项目配置,即.RAILS_ENV或DATABASE_URL.

variables:   
  DATABASE_URL: "postgres://postgres@postgres/my_database"
Run Code Online (Sandbox Code Playgroud)

这些变量稍后可用于所有已执行的命令和脚本.

YAML定义的变量也设置为所有创建的服务容器,从而允许对它们进行微调.

当我尝试使用它时,我的版本不会运行任何阶段,并且无论如何都标记为成功,这是一个糟糕的YAML的好兆头.我将gitlab-ci.yml内容粘贴到设置区域的LINT工具中,输出错误为:

状态:语法不正确

错误:变量作业:未知参数PACKAGE_NAME

我使用的YAML语法与文档相同,但是它不起作用.我无法找到任何与此相关的漏洞.以下是我当前的版本和我的gitlab-ci.yml的清理版本.

Gitlab版本:7.13.2 Omnibus

Gitlab Runner版本:0.5.2

gitlab-ci.yml(Sanitized)

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
Run Code Online (Sandbox Code Playgroud)

题:

如何正确使用此值?

附加信息:

从YAML文件中删除此部分会导致一切正常,因此文件的其余部分处于正常工作状态.(当然,未定义的变量会导致脚本错误......)

即使只是将用于测试的变量减少到仅仅PACKAGE_NAME,也会导致相同的中断.

Rou*_*tor 11

原来的答案不再正确.

现在的原始文件,现在还有更多的方法.变量可以从GUI,API创建,也可以在其中定义.gitlab-ci.yml.

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


小智 8

虽然它在文档中,但我不认为变量包含在最新版本的gitlab(7.13)中.从yaml文件中读取变量的功能是由ayufan 9天前提交的.

看看7.13稳定分支的解析器,你可以看到他的贡献没有进入.所以假设你在7.13或更早,我担心我们运气不好.由于它是在master上,我相当肯定我们会在下一个版本中看到它.在那之前,我们可以使用补丁,如果你直接使用源代码就做一个git pull,或者只是依赖项目变量直到下一个版本.

  • 优秀的调查,我错过了.我真的很想知道为什么它成为了文档,而不是解析器.无论如何,我通过在作业的构建脚本中定义变量来解决它,它创建了许多冗余变量定义,包含多个作业,但现在可以使用. (2认同)