Bitbucket管道在分支之间共享一些步骤
是否可以在分支之间共享步骤,并且仍然运行特定于分支的步骤?例如,开发和发布分支具有相同的构建过程,但上传到单独的S3存储桶Bitbucket管道在分支之间共享一些步骤,bitbucket,bitbucket-pipelines,Bitbucket,Bitbucket Pipelines,是否可以在分支之间共享步骤,并且仍然运行特定于分支的步骤?例如,开发和发布分支具有相同的构建过程,但上传到单独的S3存储桶 pipelines: default: - step: script: - cd source - npm install - npm build develop: - step: script: - s3cmd put --config
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:
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
最后两行将仅在指定的分支上执行。虽然尚未正式支持,但您现在可以预定义步骤。
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
当我在分支的子集上运行相同的步骤时,我从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
它并不完美,但总比没有好使用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
定义:
步骤:
-步骤:&测试步骤
名称:运行测试
脚本:
-npm安装
-npm运行测试
-步骤:&部署步骤
名称:部署到暂存
部署:登台
脚本:
-npm安装
-npm运行构建
-工厂部署
管道:
违约:
-步骤:*测试步骤
-步骤:*部署步骤
分支机构:
大师:
-步骤:*测试步骤
-步骤:
您可以使用定义和重用步骤
- 锚定
和以定义配置块
- 别名
*
以在其他地方引用该块
并且源分支保存在名为BITBUCKET\u branch
您还需要将生成结果(在本例中是build/
文件夹)从一个步骤传递到下一个步骤,这是通过完成的
将这三者结合起来,将获得以下配置:
定义:
步骤:
-步骤:&生成
名称:Build
脚本:
-cd源
-npm安装
-npm构建
工件:#定义要传递给每个未来步骤的工件。
-/建造
-步骤:&s3传输
姓名:转到S3
脚本:
-s3cmd put——配置s3cmd.cfg./build s3://${BITBUCKET\u BRANCH}
管道:
违约:
-步骤:*构建
发展:
-步骤:*构建
-步骤:*s3传输
登台:
-步骤:*构建
-步骤:*s3传输
您现在还可以使用和步骤中提到的glob模式,一次完成develope
和staging
分支:
“{develope,staging}”:
-步骤:*构建
-步骤:*s3传输
这里有两个注意事项:1)定义块必须在管道块之前(Yamlint允许两个但不允许bitbucket)2)要共享许多步骤,请为每个步骤指定一个唯一的名称:步骤构建:&build
然后-step:&step构建
将锚调用参数化会很好,但它似乎不受支持。这里有一个功能: