GitLab CI在另一个变量中设置变量

时间:2020-06-03 04:41:13

标签: bash gitlab gitlab-ci

我有一个带有3个文件的CI脚本设置:

# file Vars
.def-vars:
    STAGING_SSH_DEST: mysite.com
    PROJECT_ROOT: myRoot
# 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
# file deploy
.deploy:
    variables:
        SSH_DESTINATION: mysite.com
        RSYNC_DESTINATION: $SSH_DESTINATION:$PROJECT_ROOT

我将文件和变量按这种方式拆分,以提高脚本的可重用性。

这个想法是,因为我有多个站点目标,暂存产品,所以我希望能够将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

root和SSH_DESTINATION打印就很好。在将两者相加时,前者似乎扩展了太少了。

我的想法是只在脚本部分中创建rsync变量,但是我想避免这种情况,因为我希望能够在不编辑.deploy作业的情况下覆盖rsync变量。

这怎么完成?

0 个答案:

没有答案