我们如何在gitlab-ci.yml中使用'variables'关键字呢?
How do we use the 'variables' keyword in gitlab-ci.yml?
我正在尝试使用 Gitlab CI 文档中记录的 variables:
关键字:
发件人:https://docs.gitlab.com/ce/ci/yaml/README.html
variables
This feature requires gitlab-runner with version equal or greater than
0.5.0.
GitLab CI allows you to add to .gitlab-ci.yml variables that are set
in build environment. The variables are stored in repository and are
meant to store non-sensitive project configuration, ie. RAILS_ENV or
DATABASE_URL.
variables:
DATABASE_URL: "postgres://postgres@postgres/my_database"
These variables can be later used in all executed commands and
scripts.
The YAML-defined variables are also set to all created service
containers, thus allowing to fine tune them.
当我尝试使用它时,我的构建没有 运行 任何阶段并且无论如何都标记为成功,这是错误 YAML 的一个好兆头。我将我的gitlab-ci.yml内容粘贴到设置区的LINT工具中,输出错误为:
Status: syntax is incorrect
Error: variables job: unknown parameter PACKAGE_NAME
我正在使用与文档相同的 YAML 语法,但是它不起作用。我找不到与此相关的任何未解决的错误。以下是我的当前版本和我的 gitlab-ci.yml.
的净化版本
Gitlab 版本:7.13.2 综合
Gitlab Runner 版本: 0.5.2
gitlab-ci.yml(消毒)
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 也会导致同样的中断。
虽然它在文档中,但我不认为变量包含在最新版本的 gitlab (7.13) 中。从 yaml 文件中读取变量的功能是 commit by ayufan 9 天前引入的。
查看 the parser on the 7.13 stable branch,您可以看到他的贡献没有被录入。所以假设您使用的是 7.13 或更早版本,恐怕我们运气不好。由于它在 master 上,我相当肯定我们会在下一个版本中看到它。在那之前,如果您直接使用源代码,我们可以猴子补丁,执行 git 拉取,或者在下一个版本发布之前只依赖项目变量。
原答案不再正确。
原来的文档现在还在,现在方法也多了。变量可以从 GUI 创建,API,或者也可以在 .gitlab-ci.yml
中定义。
我正在尝试使用 Gitlab CI 文档中记录的 variables:
关键字:
发件人:https://docs.gitlab.com/ce/ci/yaml/README.html
variables
This feature requires gitlab-runner with version equal or greater than 0.5.0.
GitLab CI allows you to add to .gitlab-ci.yml variables that are set in build environment. The variables are stored in repository and are meant to store non-sensitive project configuration, ie. RAILS_ENV or DATABASE_URL.
variables: DATABASE_URL: "postgres://postgres@postgres/my_database"
These variables can be later used in all executed commands and scripts.
The YAML-defined variables are also set to all created service containers, thus allowing to fine tune them.
当我尝试使用它时,我的构建没有 运行 任何阶段并且无论如何都标记为成功,这是错误 YAML 的一个好兆头。我将我的gitlab-ci.yml内容粘贴到设置区的LINT工具中,输出错误为:
Status: syntax is incorrect
Error: variables job: unknown parameter PACKAGE_NAME
我正在使用与文档相同的 YAML 语法,但是它不起作用。我找不到与此相关的任何未解决的错误。以下是我的当前版本和我的 gitlab-ci.yml.
的净化版本Gitlab 版本:7.13.2 综合
Gitlab Runner 版本: 0.5.2
gitlab-ci.yml(消毒)
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 也会导致同样的中断。
虽然它在文档中,但我不认为变量包含在最新版本的 gitlab (7.13) 中。从 yaml 文件中读取变量的功能是 commit by ayufan 9 天前引入的。
查看 the parser on the 7.13 stable branch,您可以看到他的贡献没有被录入。所以假设您使用的是 7.13 或更早版本,恐怕我们运气不好。由于它在 master 上,我相当肯定我们会在下一个版本中看到它。在那之前,如果您直接使用源代码,我们可以猴子补丁,执行 git 拉取,或者在下一个版本发布之前只依赖项目变量。
原答案不再正确。
原来的文档现在还在,现在方法也多了。变量可以从 GUI 创建,API,或者也可以在 .gitlab-ci.yml
中定义。