web-dev-qa-db-fra.com

Les pipelines Bitbucket partagent certaines étapes entre les succursales

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.

21
YarGnawh

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

17
Max Malysh

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

11
con--

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.

3
Finesse
1
YarGnawh