Bitbucket Pipelines

"Build, test and deploy from Bitbucket"

Alexander Bogomolov / @abogomolov

Was sind Bitbucket Pipelines

Continuous integration

  • Docker images as build environments
  • Konfiguration direkt im Projekt
  • Granulare Einstellung der Tasks pro Branch/Tag

Pipelines verwenden

Aktivierung

Quelle: https://confluence.atlassian.com/bitbucket/get-started-with-bitbucket-pipelines-792298921.html

bitbucket-pipelines.yml

default

image: abogomolov/default:7.0.0

pipelines:
   # Pipelines that run automatically on a commit to a branch
  default:
    - step:
        script:
          - composer --version
          - composer install --prefer-dist --optimize-autoloader --no-interaction
          - vendor/bin/phpunit -c phpunit.xml --coverage-text
          - vendor/bin/phpcs --standard=vendor/drupal/coder/coder_sniffer/Drupal/ruleset.xml --ignore=vendor/ .

branches

image: abogomolov/default:7.0.0

pipelines:
   # Pipelines that run automatically on a commit to a specific branch
  branches:
    feature/*:
      - step:
          script:
            - composer --version
            - composer install --prefer-dist --optimize-autoloader --no-interaction
            - vendor/bin/phpcs --standard=vendor/drupal/coder/coder_sniffer/Drupal/ruleset.xml --ignore=vendor/ .
    master:
      - step:
          image: abogomolov/deploy:7.0.0 # Override default image
          script:
            - echo "Deployment"

custom

image: abogomolov/default:7.0.0

pipelines:

  # Pipelines that are triggered manually
  custom:
    phpunit:
      - step:
          script:
            - composer --version
            - composer install --prefer-dist --optimize-autoloader --no-interaction
            - vendor/bin/phpunit -c phpunit.xml --coverage-text
    phpcs:
      - step:
          script:
            - composer --version
            - composer install --prefer-dist --optimize-autoloader --no-interaction
            - vendor/bin/phpcs --standard=vendor/drupal/coder/coder_sniffer/Drupal/ruleset.xml --ignore=vendor/ .
Quelle: https://confluence.atlassian.com/bitbucket/run-pipelines-manually-861242583.html

Environment variables

Die environment variables werden in den Container gereicht.

Standardvariablen

Private Repos per Composer installieren

SSH-Key generieren

ssh-keygen -t rsa -b 4096 -C "pipelines@bitbucket.com"

Deplyoment key

Im privaten Repository wird der public key als deplyoment key eingetragen

Environment variable

Im Repository mit der Pipeline wird der private key als environment variable eingetragen

bitbucket-pipelines.yml

image: abogomolov/default:7.0.0

pipelines:
  default:
    - step:
        script:
          - mkdir -p ~/.ssh
          - ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
          - (umask 077; echo $SSH_KEY | base64 --decode -i > ~/.ssh/id_rsa)
          - composer --version
          - composer install --prefer-dist --optimize-autoloader --no-interaction

Pipeline lokal testen

docker run -it \
    --volume=/PFAD/ZUM/REPO:/localDebugRepo \
    --workdir="/localDebugRepo" \
    --memory=1g \
    --memory-swap=1g \
    --entrypoint=/bin/bash IMAGE_AUS_PIPELINE

Einschränkungen

Build minutes

  • 50 Minuten pro Monat (kostenlos)
  • 500 Minuten pro Monat (Standard)
  • 1000 Minuten pro Monat (Premium)
  • 4 GB RAM
  • max. 2 Stunden Laufzeit

Fragen?

Vielen Dank!