我是 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
有几种可能的选择:
[skip ci]
添加到您的 git 提交消息每当您单独更改
bitbucket-pipelines.yml
时,请在 Git 提交消息中的某处添加 "[skip ci]"(不带引号)。当您推送到 Bitbucket 远程时,这将阻止管道运行。
来源和更多信息:
优点:
缺点:
"[skip ci]"
文本。这很容易忘记,或者新团队成员可能不知道。编写一个 Git Hook 脚本,它将自动将“[skip ci]”文本插入到 Git 提交消息中。该脚本必须执行以下操作:
git diff --name-only HEAD~0 HEAD~1
bitbucket-pipelines.yml
是唯一更改的文件,请修改提交以将 "[skip ci]"
插入到提交消息中。有关 Git Hooks 的更多信息:
优点:
缺点:
bitbucket-pipelines.yml
检查文件更改在
yml
构建脚本中添加一个部分,以检查在最新提交中更改了哪个文件。
yml 中的脚本必须执行以下操作:
git diff --name-only HEAD~0 HEAD~1
bitbucket-pipelines.yml
是唯一更改的文件,请使用 exit 0
语句立即中止 CI 构建。优点:
缺点:
使用
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"
来源和更多信息: