Gitlab-ci不会在ssh命令中替换我的变量

时间:2019-02-21 03:42:47

标签: curl gitlab-ci

在我的gitlab-ci.yml中,我有一个命令可以通过curl帖子在gitlab中创建发行版

# create release
    - >- 
        curl --request POST -H 'PRIVATE-TOKEN: ${GITLABAPI_TOKEN}' -H 'Content-Type: application/json' --data "{\"description\": \"`git log $(git describe --tags --abbrev=0)..HEAD --oneline`\"}" https://gitlab.unc.nc/api/v4/projects/${APP_GITLAB_NUMBER}/repository/tags/${CI_COMMIT_TAG}/release

此请求得到了“ 401未经授权”,因为我怀疑-H'PRIVATE-TOKEN:$ {GITLABAPI_TOKEN}'没有被变量值替换。 与以下内容相同:$ {GITLABAPI_TOKEN} $ GITLABAPI_TOKEN“ $ {GITLABAPI_TOKEN}”

如果我显示这样的值,则该值确定:

 ssh root@devsb01 "echo $GITLABAPI_TOKEN"

如果我直接使用密码值发布帖子,那么它会起作用:

    - >- 
        curl --request POST -H 'PRIVATE-TOKEN: xkwMyRealPwdùwsx' -H 'Content-Type: application/json' --data "{\"description\": \"`git log $(git describe --tags --abbrev=0)..HEAD --oneline`\"}" https://gitlab.unc.nc/api/v4/projects/${APP_GITLAB_NUMBER}/repository/tags/${CI_COMMIT_TAG}/release

我认为我需要在命令中添加一些内容,以便将其替换...但是我不知道如何...

PS:请注意,URL变量$ {APP_GITLAB_NUMBER}和$ {CI_COMMIT_TAG}已正确替换

1 个答案:

答案 0 :(得分:3)

在单引号内,shell不会扩展任何内容。请把PRIVATE-TOKEN放在双引号中:

std::vector<double>::iterator fromHere{vec.data() + n};
vec.erase(fromHere, vec.end());