Est-il possible de partager des étapes entre les branches et d'exécuter des étapes spécifiques aux branches? Par exemple, la branche de développement et de publication a le même processus de génération, mais téléchargée dans des compartiments S3 distincts.
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
J'ai vu ce post ( Bitbucket Pipelines - plusieurs branches avec les mêmes étapes ) mais c'est pour les mêmes étapes.
Utilisez des ancrages 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
Documents: https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html
Bien qu'il ne soit pas encore officiellement pris en charge, vous pouvez prédéfinir des étapes maintenant.
J'ai reçu cette astuce du personnel de Bitbucket quand j'avais n problème exécutant les mêmes étapes sur un sous-ensemble de branches.
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
Ce n'est pas parfait, mais c'est mieux que rien
Je pense que Bitbucket ne peut pas le faire. Vous pouvez utiliser un pipeline et vérifier le nom de la branche:
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
Les deux dernières lignes seront exécutées uniquement sur les branches spécifiées.
Apparemment, c'est en préparation. Si tout va bien disponible bientôt.