我尝试使用GitLab API和cURL(PowerShell中的cURL.exe
)发布一个带有GitLab-CI作业的版本。
但是GitLab变量转换失败了...(我尝试了几种格式都没有成功)
release_job:
stage: release
tags:
- windows-powershell
rules:
- if: $CI_COMMIT_TAG
script:
- curl.exe --data '{\"tag_name\":\"'"$CI_COMMIT_TAG"'\", \"name\":\"'"$CI_COMMIT_TAG"'\", \"ref\":\"'"$CI_COMMIT_SHORT_SHA"'\"}' --header "Content-Type:application/json" --header "PRIVATE-TOKEN:<my_private_token>" --request POST "https://<my_gitlab>/api/v4/projects/388/releases"
当我转换自己的GitLab变量的脚本状态是成功的。
release_job:
stage: release
tags:
- windows-powershell
rules:
- if: $CI_COMMIT_TAG
script:
- curl.exe --data '{\"tag_name\":\"v0.1\", \"name\":\"v0.1\", \"ref\":\"05974ba7\"}' --header "Content-Type:application/json" --header "PRIVATE-TOKEN:<my_private_token>" --request POST "https://<my_gitlab>/api/v4/projects/388/releases"
你能帮我理解一下吗。提前说,谢谢。
2条答案
按热度按时间8gsdolmq1#
这是对使用PowerShell进行字符转义缺乏了解。
使用PowerShell时,双引号括起的字符串中的双引号字符(
"
)必须先通过反勾号进行转义。 而在PowerShell中,如果反勾号
字符出现在任何用双引号引起来的字符串中,则需要对其进行转义。来源:Escaping in PowerShell by Hilltop Lab
因此解决方案是:
j8yoct9x2#
私有令牌:$env:令牌变量名称