Bitbucket允许启动PR的管道:
pipelines:
pull-requests:
"**":
- step:
script:
- echo "First step"这条管道运行在公关创作和更新上。每一次推到一个分支为这个公关重播它。
有没有一种方法只在公关创作上运行管道,而不是在更新时运行?
发布于 2022-10-31 21:04:22
我有点晚了,但希望这能帮上忙。我会尝试这样的方法:
pipelines:
pull-requests:
"**":
- step:
name: 'Run Once'
caches:
- hasrun
script:
- ./pr-cache.sh
branches:
main:
- step:
name: 'Clear Cache'
caches:
- hasrun
script:
- rm prs/*
definitions:
caches:
hasrun: prs/诀窍是使用缓存。在这里,pr-cache.sh只检查带有PR id的文件是否已经存在。如果是的话,什么都不会发生。否则,它会创建文件,并执行一些操作。
#!/bin/bash
mkdir prs 2>/dev/null
if [[ -f prs/$BITBUCKET_PR_ID.txt ]]; then
echo "Not doing a thing" # PR pipeline has already been run once.
else
echo $BITBUCKET_PR_ID > prs/$BITBUCKET_PR_ID.txt
echo "Doing a thing" # PR pipeline has not been run yet
fi由于prs文件夹是缓存的,下一次构建时可以使用pr文件。
这并不完美。目前无法知道哪个PR触发了branches步骤中的构建,因此从缓存中清除PR的唯一方法是删除整个文件夹。有一个开放特征请求可以使$BITBUCKET_PR_ID对所有管道步骤都可用,而不仅仅是pull-requests。
一旦该特性可用,我将用rm prs/$BITBUCKET_PR_ID.txt替换rm prs/$BITBUCKET_PR_ID.txt行。
在此之前,此解决方案将在任何一个PR合并为时清除所有PRs的缓存。这意味着它应该大大减少重新运行的次数。如果您的公关创建非常同步,这可能正是您所需要的。
https://stackoverflow.com/questions/69960883
复制相似问题