ブランチ間でステップを共有し、ブランチ固有のステップを実行することは可能ですか?たとえば、開発ブランチとリリースブランチのビルドプロセスは同じですが、個別の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-同じ手順の複数のブランチ )が、同じ手順です。
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
正式にはまだサポートされていませんが、ステップを事前に定義できます。
問題 がブランチのサブセット全体で同じ手順を実行しているときに、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
完璧ではありませんが、何もないよりはましです
Bitbucketはそれができないと思います。 1つのパイプラインを使用してブランチ名を確認できます。
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
最後の2行は、指定されたブランチでのみ実行されます。