-
Benjamin Bertrand authored
Every tagged release is automatically deployed to staging by launching the job template from Ansible AWX
Benjamin Bertrand authoredEvery tagged release is automatically deployed to staging by launching the job template from Ansible AWX
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 1.61 KiB
image: docker:latest
.runner_tags: &runner_tags
tags:
- dind
services:
- docker:dind
variables:
CONTAINER_TEST_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
CONTAINER_RELEASE_IMAGE: "$CI_REGISTRY_IMAGE:latest"
CONTAINER_CACHE_IMAGE: "$CI_REGISTRY_IMAGE:master"
stages:
- build
- test
- release
- deploy
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
build:
<<: *runner_tags
stage: build
script:
- docker pull "$CONTAINER_CACHE_IMAGE" || true
- docker build --pull --cache-from "$CONTAINER_CACHE_IMAGE" -t "$CONTAINER_TEST_IMAGE" .
- docker push "$CONTAINER_TEST_IMAGE"
test:
<<: *runner_tags
stage: test
before_script:
- apk add --update py-pip
- pip install docker-compose
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker pull "$CONTAINER_TEST_IMAGE"
- docker-compose -f docker-compose.yml up -d postgres redis
- sleep 5
- docker-compose -f docker-compose.yml run --rm web
after_script:
- docker rm -f csentry_postgres
- docker rm -f csentry_redis
release-image:
<<: *runner_tags
stage: release
script:
- docker pull "$CONTAINER_TEST_IMAGE"
- docker tag "$CONTAINER_TEST_IMAGE" "$CONTAINER_RELEASE_IMAGE"
- docker push "$CONTAINER_RELEASE_IMAGE"
only:
- tags
deploy-staging:
<<: *runner_tags
stage: deploy
before_script:
- apk add --update curl
- curl -s -o /tmp/functions.sh ${ICS_SHARED_GITLAB_CI_FUNCTIONS}
- . /tmp/functions.sh
script:
- launch_job_template deploy-csentry-staging
only:
- tags