我正在尝试使用Gitlab CI文档中记录的variables:
关键字:
FROM: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"
这些变量稍后可用于所有已执行的命令和 脚本。
YAML定义的变量也设置为所有已创建的服务 容器,因此允许微调它们。
当我尝试使用它时,我的构建版本不会运行任何阶段并且标记为成功,这是一个糟糕的YAML的好兆头。我将gitlab-ci.yml内容粘贴到设置区域的LINT工具中,输出错误为:
状态:语法错误
错误:变量作业:未知参数PACKAGE_NAME
我正在使用与文档相同的YAML语法,但它不起作用。我无法找到任何与此相关的漏洞。以下是我当前的版本和我的gitlab-ci.yml的清理版本。
Gitlab版本:7.13.2 Omnibus
Gitlab亚军版: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
问题:
如何正确使用此值?
其他信息:
从YAML文件中删除此部分会导致一切正常,因此文件的其余部分处于正常工作状态。 (当然,未定义的变量会导致脚本错误......)
即使只是将用于测试的变量减少到仅PACKAGE_NAME也会导致相同的中断。
答案 0 :(得分:11)
原来的答案不再正确。
原始文档现在已经存在,现在还有更多方法。变量可以从GUI,API创建,也可以在.gitlab-ci.yml
中定义。
答案 1 :(得分:8)
虽然它在文档中,但我不认为变量包含在最新版本的gitlab(7.13)中。从yaml文件中读取变量的功能是在9天前由commit by ayufan引入的。
看着the parser on the 7.13 stable branch,你可以看出他的贡献没有进入。所以假设你在7.13或更早,我担心我们运气不好。由于它是在master上,我相当肯定我们会在下一个版本中看到它。在那之前,如果您直接使用源代码,我们可以修补补丁,执行git pull,或者只是依赖项目变量直到下一个版本。