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

问题描述 投票:0回答:1

我是 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
bitbucket bitbucket-pipelines
1个回答
12
投票

有几种可能的选择:

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

每当您单独更改

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

来源和更多信息:

优点:

  • 简单又容易。

缺点:

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

2.使用 Git Hook 自动修改您的 git 提交消息

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

  1. 本地提交后,检查最新提交以查看哪些文件已更改。使用类似
    git diff --name-only HEAD~0 HEAD~1
  2. 的内容
  3. 如果
    bitbucket-pipelines.yml
    是唯一更改的文件,请修改提交以将
    "[skip ci]"
    插入到提交消息中。

有关 Git Hooks 的更多信息:

优点:

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

缺点:

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

yml
构建脚本中添加一个部分,以检查在最新提交中更改了哪个文件。

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

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

优点:

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

缺点:

  • CI 构建的 Docker 映像将需要 1-5 分钟来加载,然后自行中止。这有点低效,并且会消耗一些构建时间。
  • 因为 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"

来源和更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.