首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bitbucket管道:只在PR创建时运行管道,而不是PR更新?

bitbucket管道:只在PR创建时运行管道,而不是PR更新?
EN

Stack Overflow用户
提问于 2021-11-14 06:48:14
回答 1查看 352关注 0票数 0

Bitbucket允许启动PR的管道:

代码语言:javascript
复制
pipelines:
  pull-requests:
    "**":
      - step:
          script:
            - echo "First step"

这条管道运行在公关创作和更新上。每一次推到一个分支为这个公关重播它。

有没有一种方法只在公关创作上运行管道,而不是在更新时运行?

EN

回答 1

Stack Overflow用户

发布于 2022-10-31 21:04:22

我有点晚了,但希望这能帮上忙。我会尝试这样的方法:

代码语言:javascript
复制
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的文件是否已经存在。如果是的话,什么都不会发生。否则,它会创建文件,并执行一些操作。

代码语言:javascript
复制
#!/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的缓存。这意味着它应该大大减少重新运行的次数。如果您的公关创建非常同步,这可能正是您所需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69960883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档