我现在正在配置Circleci配置,以尝试为每个新分支部署一个暂存版本,然后通过暂存演示的链接向我的懈怠团队发送一条消息。
我已经完成了向松弛部分发送消息的操作,但是现在CircleCI每次按下时都会向松弛部分发送消息。我想限制为特定分支只发生一次。我知道可以使用CIRCLE_BRANCH env来标识当前分支,但是如何将该变量保存在某种缓存中,以便可以对该变量运行条件检查以避免两次运行同一命令?
我检查了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的预期行为是每个分支名称仅发送一次松弛消息。
答案 0 :(得分:0)
非常酷的问题。我将分享一些可行的想法。
那么,过渡站点URL是否基于分支名称创建?会始终以相同的方式生成吗?
如果是这样,我将在CircleCI上首先检查暂存URL的存在。如果已存在,则说明它已经创建,这意味着该分支已经发布到Slack,执行可以就此结束。
另一个想法是将文件touch .staging-created
放入FS,并使用分支名称({{ .Branch }}
)作为密钥的一部分将其保存到CircleCI缓存中。然后,在将消息发送到Slack之前,请在恢复缓存后检查该文件。