防止在更新 bitbucket-pipelines.yml 时触发 bitbucket 管道

prevent the bitbucket pipline from tirggering when bitbucket-pipelines.yml is updated

我是 bitbuckt 管道的新手。对于我的节点项目,我在管道中添加了 bitbucket-pipelines.yml 我有一个构建容器并将其推送到 ECR 的步骤以及另一个部署步骤。

现在每次我对 bitbucket-pipelines.yml 进行更改时,它都会构建一个新映像并将其推送到 ECR 并进行部署。

当我更改 bitbucket-pipelines.yml 时,我不知道要触发什么流水线。我只希望管道在我对我的应用程序进行更改时触发。我是不是项目设置错了?

我的项目结构。

.
├── bitbucket-pipelines.yml
├── Dockerfile
├── index.js
├── node_modules
├── package.json
├── package-lock.json
└── README.md

有几个可能的选项:

1。将 [skip ci] 添加到您的 git 提交消息

每当您单独更改 bitbucket-pipelines.yml 时,请在 Git 提交消息的某处添加“[skip ci]”(不带引号)。当您推送到 Bitbucket 远程时,这将阻止管道 运行ning。

优点:

  • 简单易行。

缺点:

  • 您必须记住手动编写 "[skip ci]" 文本。它很容易忘记,或者新的团队成员可能不知道。

2。使用 Git 挂钩自动修改你的 git 提交信息

编写一个 Git 钩子脚本,它会自动将“[skip ci]”文本插入到 Git 提交消息中。该脚本必须执行如下操作:

  1. 本地提交后,检查对 see which files were changed 的最新提交。使用像 git diff --name-only HEAD~0 HEAD~1
  2. 这样的东西
  3. 如果 bitbucket-pipelines.yml 是唯一更改的文件,请修改提交以将 "[skip ci]" 插入到提交消息中。

有关 Git 挂钩的更多信息:

优点:

  • 它是全自动的。无需手动标记您的提交消息。

缺点:

  • 创建脚本可能并不容易。
  • 每个克隆的 repo 都需要配置 git 挂钩。参见:Can Git hook scripts be managed along with the repository?

3。使 bitbucket-pipelines.yml 检查文件更改

yml 构建脚本中添加一个部分来检查哪个文件在最近的提交中被更改。

yml 中的脚本必须执行如下操作:

  1. 检查最新的提交以查看更改了哪些文件。使用像 git diff --name-only HEAD~0 HEAD~1
  2. 这样的东西
  3. 如果 bitbucket-pipelines.yml 是唯一更改的文件,立即中止 CI 构建,使用 exit 0 语句。

优点:

  • 它是全自动的。无需手动标记您的提交消息。
  • 无需编写 Git 钩子脚本。

缺点:

  • 您的 CI 构建的 Docker 图像将需要 1-5 分钟来加载,然后自行中止。这有点无效cient,它会占用你的一些构建时间。
  • 因为 CI 构建仍会 运行 几分钟,它会污染你的 CI 构建历史,因为构建 运行 没有做任何事情.

4。使用带有“changesets”和“includePaths”的条件步骤

定义一个 changesets 和一个 includePaths 以仅当其中一个修改的文件与 includePaths.

中的表达式匹配时才执行一个步骤
pipelines:
  default:
    - step:
        name: build-frontend-artifact
        condition:
          changesets:
            includePaths:
              # only xml files directly under resources directory
              - "src/main/resources/*.xml"
              # any changes in frontend directory
              - "src/site/**"
        script:
          - echo "Building frontend artifact"

来源和更多信息在这里:https://bitbucket.org/blog/conditional-steps-and-improvements-to-logs-in-bitbucket-pipelines