当前位置: 首页 > 知识库问答 >
问题:

比特桶管道在分支之间共享一些步骤

盖锦程
2023-03-14

是否可以在分支之间共享步骤并仍然运行分支特定的步骤?例如,开发和发布分支具有相同的构建过程,但上传到单独的S3存储桶。

pipelines:
  default:
    - step:
        script:
          - cd source
          - npm install
          - npm build
  develop:
    - step:
        script:
          - s3cmd put --config s3cmd.cfg ./build s3://develop

  staging:
    - step:
        script:
          - s3cmd put --config s3cmd.cfg ./build s3://staging

我看到了这篇文章(Bitbucket Pipelines-多个分支具有相同的步骤),但它的步骤是相同的。

共有3个答案

贺季同
2023-03-14

我看比特桶不行,可以用一个管道,查一下分支名称:

pipelines:
  default:
    - step:
        script:
          - cd source
          - npm install
          - npm build 
          - if [[ $BITBUCKET_BRANCH = develop ]]; then s3cmd put --config s3cmd.cfg ./build s3://develop; fi
          - if [[ $BITBUCKET_BRANCH = staging ]]; then s3cmd put --config s3cmd.cfg ./build s3://staging; fi

最后两行将仅在指定的分支上执行。

贺功
2023-03-14

虽然尚未正式支持它,但您现在可以预定义步骤。
您可以使用 yaml 锚点。当我在分支子集上运行相同的步骤时遇到问题时,我从 bitbucket 员工那里得到了这个提示。

definitions:
  step: &Build
    name: Build
    script:
      - npm install
      - npm build

pipelines:
  default:
    - step: *Build
  branches:
    master:
      - step: *Build
      - step:
          name: deploy
          # do some deploy from master only
卢聪
2023-03-14

使用YAML锚:

definitions:
  steps:
    - step: &Test-step
        name: Run tests
        script:
          - npm install
          - npm run test
    - step: &Deploy-step
        name: Deploy to staging
        deployment: staging
        script:
          - npm install
          - npm run build
          - fab deploy
pipelines:
  default:
    - step: *Test-step
    - step: *Deploy-step
  branches:
    master:
      - step: *Test-step
      - step:
        <<: *Deploy-step
        name: Deploy to production
        deployment: production
        trigger: manual

文档: https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html

 类似资料:
  • 我已经使用下面的配置为我的web应用程序设置了连续部署(bitbucket-pipelines.yml)。 虽然这有效,但我想通过并行运行单元和集成测试步骤来提高构建速度。 这还有一个优点,就是可以看到比特桶中的不同步骤,包括每一步的执行时间。 这是行不通的,因为每个步骤都创建了一个干净的Docker容器,并且测试步骤上不再安装依赖项。 我知道我可以使用工件在步骤之间共享文件,但这仍然需要创建多个

  • 我想在多个python进程之间共享。以便从其他python进程发送。 如何跨多个python进程共享。 代码如下: 目标是从通道从其他python进程发送。

  • 问题内容: 创建一个Today小部件,我用来保留一些数据。在主应用程序中,我正在使用。这不能由扩展读取(或可以?),这就是为什么我使用构造函数。 用户在主应用程序中持久存储的数据需要在扩展程序中可用。 目前,我坚持两者,以便可以共享这些值 问题是我应该将它们放在一起并仅在我的应用程序中使用,还是这种不好的做法? 编辑:我正在使用一个应用程序组容器。为了澄清起见,我问我是否应该在整个项目中用suit

  • 问题内容: 假设我有一个要注入到config中的模块: 有两个子模块: 这是第一个: 第二个是相同的,以简化示例: 您会注意到,您可以将它们作为提供者来访问以配置选项: 如果我们在控制器中,则可以覆盖每个范围,例如: 但是,如果他们总是共享相同的财产怎么办?如何在提供商之间共享某些东西? 我可以同时为和注入和配置共享属性吗? 如何同时访问和作为单个模块的扩展? 问题答案: 将模块插入两个共享这些属

  • 只有在必要时,我才尝试在“httpRequestBegin”管道中执行一些操作。我的处理器在Sitecore解析用户后执行(processor type=“Sitecore.Pipelines.HttpRequest.UserResolver,Sitecore.Kernel”),因为如果Sitecore无法首先解析用户,我也在解析用户。 稍后,我想在管道“insertRenderings”中添加一

  • 我有一个名为“jenkins共享库”的jenkins共享库的存储库,现在我创建了一个名为“test”的新分支, 我有一个应用程序需要在jenkins文件中使用这个jenkins共享库,目前它被称为 我想在我的jenkins文件中使用我的jenkins共享库的这个特定测试分支,我如何使用jenkins共享库的特定分支???