防止在更新 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 提交消息中。该脚本必须执行如下操作:
- 本地提交后,检查对 see which files were changed 的最新提交。使用像
git diff --name-only HEAD~0 HEAD~1
这样的东西
- 如果
bitbucket-pipelines.yml
是唯一更改的文件,请修改提交以将 "[skip ci]"
插入到提交消息中。
有关 Git 挂钩的更多信息:
- https://githooks.com/
- https://www.atlassian.com/git/tutorials/git-hooks
- https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
优点:
- 它是全自动的。无需手动标记您的提交消息。
缺点:
- 创建脚本可能并不容易。
- 每个克隆的 repo 都需要配置 git 挂钩。参见:Can Git hook scripts be managed along with the repository?
3。使 bitbucket-pipelines.yml
检查文件更改
在 yml
构建脚本中添加一个部分来检查哪个文件在最近的提交中被更改。
yml 中的脚本必须执行如下操作:
- 检查最新的提交以查看更改了哪些文件。使用像
git diff --name-only HEAD~0 HEAD~1
这样的东西
- 如果
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
我是 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 提交消息中。该脚本必须执行如下操作:
- 本地提交后,检查对 see which files were changed 的最新提交。使用像
git diff --name-only HEAD~0 HEAD~1
这样的东西
- 如果
bitbucket-pipelines.yml
是唯一更改的文件,请修改提交以将"[skip ci]"
插入到提交消息中。
有关 Git 挂钩的更多信息:
- https://githooks.com/
- https://www.atlassian.com/git/tutorials/git-hooks
- https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
优点:
- 它是全自动的。无需手动标记您的提交消息。
缺点:
- 创建脚本可能并不容易。
- 每个克隆的 repo 都需要配置 git 挂钩。参见:Can Git hook scripts be managed along with the repository?
3。使 bitbucket-pipelines.yml
检查文件更改
在 yml
构建脚本中添加一个部分来检查哪个文件在最近的提交中被更改。
yml 中的脚本必须执行如下操作:
- 检查最新的提交以查看更改了哪些文件。使用像
git diff --name-only HEAD~0 HEAD~1
这样的东西
- 如果
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