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

2024-01-10

我是位桶管道的新手。我已经添加到我的节点项目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. Add [skip ci]到你的 git 提交消息

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

来源和更多信息:

  • https://confluence.atlassian.com/bbkb/how-to-skip-triggering-a-pipeline-build-using-skip-ci-label-1207188270.html https://confluence.atlassian.com/bbkb/how-to-skip-triggering-a-pipeline-build-using-skip-ci-label-1207188270.html
  • https://support.atlassian.com/bitbucket-cloud/docs/pipeline-start-conditions/ https://support.atlassian.com/bitbucket-cloud/docs/pipeline-start-conditions/
  • https://support.atlassian.com/bitbucket-cloud/docs/push-back-to-your-repository/ https://support.atlassian.com/bitbucket-cloud/docs/push-back-to-your-repository/
  • https://support.atlassian.com/bitbucket-cloud/docs/build-test-and-deploy-with-pipelines/ https://support.atlassian.com/bitbucket-cloud/docs/build-test-and-deploy-with-pipelines/

优点:

  • 这很简单。

缺点:

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

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

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

  1. 本地提交后,查看最新提交查看哪些文件被更改 https://stackoverflow.com/questions/1552340/how-to-list-only-the-names-of-files-that-changed-between-two-commits。使用类似的东西git diff --name-only HEAD~0 HEAD~1
  2. If bitbucket-pipelines.yml是唯一更改的文件,修改提交以插入"[skip ci]"到提交消息中。

有关 Git Hook 的更多信息:

  • https://githooks.com/ https://githooks.com/
  • https://www.atlassian.com/git/tutorials/git-hooks https://www.atlassian.com/git/tutorials/git-hooks
  • https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

优点:

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

缺点:

  • 创建脚本可能并不容易。
  • 每个克隆的存储库都需要配置 git hooks。看:Git 挂钩脚本可以与存储库一起管理吗? https://stackoverflow.com/questions/427207/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. If bitbucket-pipelines.yml是唯一更改的文件,立即中止 CI 构建,并使用exit 0陈述。

优点:

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

缺点:

  • CI 构建的 Docker 映像将需要 1-5 分钟来加载,然后自行中止。这有点低效,并且会消耗一些构建时间。
  • 由于 CI 构建仍将运行几分钟,因此未执行任何操作的构建运行会污染您的 CI 构建历史记录。

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

定义一个changesetsincludePaths仅当修改的文件之一与中的表达式匹配时才执行步骤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 https://bitbucket.org/blog/conditional-steps-and-improvements-to-logs-in-bitbucket-pipelines
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 bitbucket-pipelines.yml 更新时触发 bitbucket 管道 的相关文章

随机推荐

  • 从同一编译单元覆盖 C 中的函数调用

    我在尝试着重写 C 中的函数调用 https stackoverflow com questions 617554 override a function call in c 但是当该函数在同一编译单元中使用时 我遇到了问题 在下面的代码中
  • MBProgressHUD 和 UITableView

    我在填充 TableView 时显示 HUD 但它似乎显示在 TableView 后面 表视图分隔符破坏了 Hud 这是 TableViewController 中的代码 void viewDidLoad super viewDidLoad
  • 删除createMediaElementSource

    我已经用谷歌搜索了这个问题 但找不到任何东西 我现在的情况需要删除source createMediaElementSource这样我就可以再次创建它 我正在使用音频分析器 每次使用 ajax 加载指定曲目时都必须加载该分析器 一旦您转到另
  • 如何定义一个返回其自身类型的 Rust 函数类型?

    我正在学习 Rust 并且仍然非常努力地理解它 考虑以下 Go 定义 type FnType func paramType FnType 它只是一个返回相同类型的函数的函数 Rust 中可以实现类似的功能吗 而且 理想情况下 它可以通用地完
  • 抽象类中内部抽象方法的目的是什么?

    抽象类中内部抽象方法的目的是什么 为什么要在抽象类中创建一个内部抽象方法 如果我们想限制程序集外部的抽象类 为什么我们不直接创建抽象内部类 背后是否还有其他逻辑 Adding internal的成员public抽象类使得不可能继承它abst
  • 是否可以使用 pyscript 在浏览器上运行 pygame 制作的游戏?

    我使用 pygame 制作了一个小型太空入侵者游戏 我想知道是否可以使用 pyscript 在浏览器上玩它 这可能吗 我必须重写所有内容吗 不 PyScript 目前不支持 Pygame 我不确定找出哪些软件包的最佳方法是什么are支持 但
  • 无法授权 Azure LogAnalytics 工作区

    I am trying to connect to my workspace in the Azure Portal I am getting the error as 操作返回无效状态代码 未经授权 creds 对象已获取身份验证令牌 并
  • 隐藏用户输入

    我正在尝试获取一个既可以在本机 Windows shell 中也可以在 cygwin shell 通过 ssh 中运行的脚本 该脚本会提示并读取用户输入的密码 到目前为止 我已经尝试过以下方法 using Term ReadKey and
  • .wav 文件中的字节代表什么?

    当我将 wav 文件中的数据存储到字节数组中时 这些值意味着什么 我读到它们采用两字节表示形式 但是这些两字节值中到底包含什么 您可能听说过 音频信号是由某种波表示的 如果您曾经见过带有上下直线的波形图 这基本上就是这些文件中的内容 看看这
  • Laravel/Heroku,会话没有这样的文件或目录

    我正在尝试在 heroku 上运行我的应用程序 但对于某些请求 只有 POST GET 工作正常 我的 Ajax POST 请求出现以下错误 Error Request failed with status code 419 当我检查 He
  • SignalR - 如何在集线器中执行异步任务?

    我正在尝试使用 C 5 async await 功能创建 SignalR 应用程序 但每当运行代码时 它都会抛出 System InvalidOperationException 这是重现该问题的最简单的代码 public class Sa
  • Python ctypes 和可变性

    我注意到将 Python 对象传递给本机代码ctypes可以打破可变性预期 例如 如果我有一个 C 函数 如下所示 int print and mutate char str str 0 X return printf s n str 我这
  • AutoMapper - 使用相同的源和目标对象类型进行映射

    我使用 Automapper 获取两个相同类型的对象并映射已更改的任何新值 我尝试使用下面的代码 但它不断抛出错误 我什至不确定这是否可以通过 Automapper 来实现 例如 Mapper CreateMap
  • Web 开发人员应该了解 IE7 和 IE8 之间的主要区别是什么?

    我刚刚下载了 IE8 它取代了我的 IE7 但这没关系 因为 IE8 有一个 兼容性视图 旨在呈现像 IE7 一样的页面 不确定 JavaScript 我想知道互联网上是否列出了开发人员应该了解的版本之间的所有主要差异 我在谷歌上搜索了一下
  • 尝试安装 pg gem 时找不到 'libpq-fe.h 标头

    我正在使用 Ruby on Rails 3 1 预版本 我喜欢使用 PostgreSQL 但问题是安装pg宝石 它给了我以下错误 gem install pg Building native extensions This could ta
  • Visual Studio 项目为空?

    有没有办法在 Visual Studio 2008 或 2010 中拥有一个空项目 我的意思不是空的解决方案 而是解决方案中的空项目 基本上我有一个包含多个项目的解决方案 并且我想添加一个项目来跟踪一些静态文件 这些静态文件是解决方案的一部
  • 如何获取 Azure SendGrid api 密钥?

    我已按照以下说明进行操作如何使用 SendGrid 和 Azure 发送电子邮件 https learn microsoft com en us azure app service web sendgrid dotnet how to se
  • CXF 2.2.12:如何关闭客户端的架构验证

    我想关闭 JAXB 绑定消息的模式验证 我正在处理客户端 CXF 代码 WSDL 第一代 我尝试过使用
  • 2018 年用 C++ 处理 Unicode 的正确方法是什么?

    我尝试过搜索 stackoverflow 来找到这个问题的答案 但我发现的问题和答案都在10岁由于变化和可能的进展 我似乎无法就该主题达成共识 我知道除了 stl 之外还有几个库应该处理 unicode http userguide icu
  • 防止 bitbucket-pipelines.yml 更新时触发 bitbucket 管道

    我是位桶管道的新手 我已经添加到我的节点项目bitbucket pipelines yml在管道中 我有一个步骤是构建容器并将其推送到 ECR 另一个步骤是部署 现在 每次我对 bitbucket pipelines yml 进行更改时 它