我正试图使用slack slash命令在master分支上触发一个发布作业,该作业已被触发,但我似乎无法获取或读取传递的参数。根据gitlab的文档,我们可以传递参数来运行作业,但没有指定如何读取参数。这是松弛斜线命令:
/gitlab projectX run slack:chatops hello
这是gitlab-ci.yml 的工作
slack:chatops:
stage: chatops
rules:
- if: $CI_PIPELINE_SOURCE == "chat"
script:
- echo "Hello World, job argument: "$1
有人试过使用作业参数吗?
解决方案
我在仔细阅读了Gitlab的ChatOps文档后找到了解决方案,其中有一个CHAT_INPUT
变量,它将所有参数作为字符串包含,而上一项工作变成了:
slack:chatops:
stage: chatops
rules:
- if: $CI_PIPELINE_SOURCE == "chat"
script:
- echo "Hello World, job argument: $CHAT_INPUT"
文档中的另一个页面提到了一些可用的变量。https://docs.gitlab.com/ee/ci/chatops/index.html
ChatOps将以下CI/CD变量传递到作业:
- CHAT_INPUT包含任何其他参数
- CHAT_CHANNEL设置为在其中触发操作的通道的名称
- CHAT_USER_ID设置为触发斜杠命令的用户的聊天服务的用户ID