【发布时间】:2018-06-27 21:44:24
【问题描述】:
我现在正在配置我的 Circleci 配置,以尝试为每个新分支部署一个暂存版本,然后向我的 slack 团队发送一条带有暂存演示链接的消息。
我已经完成了向 slack 部分发送消息,但现在 CircleCI 每次推送时都会向 slack 发送一条消息。我想将其限制为仅针对特定分支发生一次。我知道我可以使用 CIRCLE_BRANCH 环境来识别当前分支,但是如何将该变量保存在某种缓存中,以便我可以对该变量运行条件检查以避免两次运行相同的命令?
我查看了 CircleCI 文档,他们提供了文件缓存,但没有提及将变量保存为缓存的任何内容。
我的 CircleCI config.yml 文件如下所示:
slackMessage:
docker:
- image: circleci/node
working_directory: ~/client
steps:
- attach_workspace:
at: ~/client
# - run: echo "$CIRCLE_BRANCH" > _branch_check
# - restore_cache:
# keys:
# - pr-{{ checksum "_branch_check" }}
- run:
command: |
PR_NUMBER=${CIRCLE_PULL_REQUEST##*/}
# yolo=pr-`echo -n $CIRCLE_PULL_REQUEST | md5sum`
# if [ -f "$yolo" ]; then
# touch $yolo
curl -X POST <Slack API webhook curl url>
# fi
# - save_cache:
# key: pr-{{ checksum "_branch_check" }}
# paths:
# - pr-{{ checksum "_branch_check" }}
注释的行是保存到缓存的部分。有了这些注释,CircleCI 会在每次推送时向 Slack 发送一条消息。如果没有注释,CircleCI 的预期行为是只为每个分支名称发送一次松弛消息。
【问题讨论】:
标签: continuous-integration yaml geometry continuous-deployment circleci