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

Tyv*_*ain 3 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
Run Code Online (Sandbox Code Playgroud)

这个请求得到一个“401 未授权”,因为我怀疑 -H 'PRIVATE-TOKEN: ${GITLABAPI_TOKEN}' 没有被变量值替换。同: ${GITLABAPI_TOKEN} $GITLABAPI_TOKEN "${GITLABAPI_TOKEN}"

如果我像这样显示值,则该值没问题:

 ssh root@devsb01 "echo $GITLABAPI_TOKEN"
Run Code Online (Sandbox Code Playgroud)

如果我直接使用密码值启动帖子,它会起作用:

    - >- 
        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
Run Code Online (Sandbox Code Playgroud)

我想我需要在命令中添加一些东西,以便它替换它......但我不知道如何......

PS:注意url变量:${APP_GITLAB_NUMBER}和${CI_COMMIT_TAG}被正确替换

Nic*_*ter 5

在单引号内,shell 不展开任何内容。请将 PRIVATE-TOKEN 放入双引号中:

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
Run Code Online (Sandbox Code Playgroud)