Der*_* C. 5 bash gitlab gitlab-ci
我有一个类似这样的 CI 脚本设置,包含 3 个文件:
# file Vars
.def-vars:
STAGING_SSH_DEST: mysite.com
PROJECT_ROOT: myRoot
Run Code Online (Sandbox Code Playgroud)
# file gitlab-ci
variables:
extends: .def-vars
STAGING_SSH_DEST: myrealsite.com
PROJECT_ROOT: /myRealRoot
deploy-stage:
extends: .deploy
variables:
SSH_DESTINATION: $STAGING_SSH_DEST
Run Code Online (Sandbox Code Playgroud)
# file deploy
.deploy:
variables:
SSH_DESTINATION: mysite.com
RSYNC_DESTINATION: $SSH_DESTINATION:$PROJECT_ROOT
Run Code Online (Sandbox Code Playgroud)
我将文件和变量像这样分开,以提高脚本的可重用性。
我的想法是,由于我有多个站点目标、临时产品,我希望能够将 ssh 目标传递给每个目标,并让作业自行计算出 rsync。问题是,变量扩展没有按照我想象的方式工作。
在部署脚本中,我添加了打印并得到以下内容:
$ echo $SSH_DESTINATION # This is the variable name local to job
myrealsite.com # Yep! printed the passed in value
$ echo $RSYNC_DESTINATION # $SSH_DESTINATION:$PROJECT_ROOT
$STAGING_SSH_DEST:/myRealRoot # That is the name of the variable passed in
Run Code Online (Sandbox Code Playgroud)
root 和 SSH_DESTINATION 打印得很好。当将两者相加时,前者似乎扩展得太少了。
我的想法是在脚本部分中创建 rsync 变量,但我想避免这种情况,因为我希望能够在不编辑作业的情况下覆盖 rsync 变量.deploy
。
如何才能做到这一点?
Gitlab CI 变量存在问题,导致您无法通过设置正确扩展变量extends
。解决此问题的选项是:
before_script
。虽然存在一些限制,但对于简单的事情来说它工作得很好。 before_script:
- export VAR1="${CI_PIPELINE_ID}"
- export VAR2="test-${VAR1}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1900 次 |
最近记录: |