# Global Variables stages: - build-base-image - build-dev-image - test - build - package - post-release image: docker.beryju.org/passbook/dev:latest variables: POSTGRES_DB: passbook POSTGRES_USER: passbook POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77" before_script: - pip install pipenv # Ensure all dependencies are installed, even those not included in passbook/dev # According to pipenv docs, -d outputs all packages, however it actually does not - pipenv lock -r > requirements-all.txt - pipenv lock -rd >> requirements-all.txt - pip install -r requirements-all.txt create-base-image: image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/base.Dockerfile --destination docker.beryju.org/passbook/base:latest stage: build-base-image only: refs: - tags - /^version/.*$/ build-dev-image: image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dev.Dockerfile --destination docker.beryju.org/passbook/dev:latest stage: build-dev-image only: refs: - tags - /^version/.*$/ isort: script: - isort -c -sg env stage: test services: - postgres:latest - redis:latest migrations: script: - python manage.py migrate stage: test services: - postgres:latest - redis:latest prospector: script: - prospector stage: test services: - postgres:latest - redis:latest pylint: script: - pylint passbook stage: test services: - postgres:latest - redis:latest coverage: script: - ./scripts/coverage.sh stage: test services: - postgres:latest - redis:latest build-passbook-server: stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination docker.beryju.org/passbook/server:latest --destination docker.beryju.org/passbook/server:0.7.4-beta only: - tags - /^version/.*$/ build-docs: stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/docs/Dockerfile --destination docker.beryju.org/passbook/docs:latest --destination docker.beryju.org/passbook/docs:0.7.4-beta only: - tags - /^version/.*$/ build-passbook-static: stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/static.Dockerfile --destination docker.beryju.org/passbook/static:latest --destination docker.beryju.org/passbook/static:0.7.4-beta only: - tags - /^version/.*$/ # running collectstatic fully initialises django, hence we need that databases services: - postgres:latest - redis:latest package-helm: image: debian:stretch-slim stage: package before_script: - apt update && apt install -y curl - curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash script: - helm dependency update helm - helm package helm artifacts: paths: - passbook-*.tgz expire_in: 1 week only: - tags - /^version/.*$/ notify-sentry: image: getsentry/sentry-cli stage: post-release variables: SENTRY_URL: https://sentry.beryju.org SENTRY_ORG: beryjuorg SENTRY_PROJECT: passbook before_script: - apk add curl script: - sentry-cli releases new passbook@0.7.4-beta - sentry-cli releases set-commits --auto passbook@0.7.4-beta only: - tags - /^version/.*$/