78 lines
1.8 KiB
YAML
78 lines
1.8 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: default
|
|
|
|
steps:
|
|
- name: postgres.server
|
|
image: postgres
|
|
environment:
|
|
POSTGRES_PORT: 5432
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: password
|
|
POSTGRES_DB: newsletter
|
|
detach: true
|
|
|
|
# The testing image is built and pushed manually
|
|
- name: test
|
|
image: registry.coincoingit.fr/zero2prod-tests:latest
|
|
environment:
|
|
POSTGRES_HOST: postgres.server
|
|
SKIP_DOCKER: "true"
|
|
EMAIL_SENDER: "\"Cyberduck <cyberduck@coincoinmail.fr>\""
|
|
EMAIL_HOST: coincoinmail.fr
|
|
EMAIL_PASSWORD:
|
|
from_secret: email_password
|
|
EMAIL_USER:
|
|
from_secret: email_user
|
|
commands:
|
|
- ./scripts/init_db.sh
|
|
- cargo build
|
|
- cargo test
|
|
|
|
- name: build
|
|
image: docker:dind
|
|
environment:
|
|
DOCKER_USER:
|
|
from_secret: docker_username
|
|
DOCKER_PASSWORD:
|
|
from_secret: docker_password
|
|
commands:
|
|
- echo $DOCKER_PASSWORD | docker login --username $DOCKER_USER --password-stdin registry.coincoingit.fr
|
|
- DOCKER_BUILDKIT=1 docker build --tag registry.coincoingit.fr/zero2prod:latest --file docker/build/Dockerfile .
|
|
- docker push registry.coincoingit.fr/zero2prod:latest
|
|
volumes:
|
|
- name: docker-sock
|
|
path: /var/run/docker.sock
|
|
when:
|
|
branch:
|
|
- main
|
|
|
|
- name: deploy
|
|
image: docker:dind
|
|
environment:
|
|
POSTGRES_USER:
|
|
from_secret: postgres_user
|
|
POSTGRES_PASSWORD:
|
|
from_secret: postgres_password
|
|
POSTGRES_DB:
|
|
from_secret: postgres_db
|
|
EMAIL_PASSWORD:
|
|
from_secret: email_password
|
|
EMAIL_USER:
|
|
from_secret: email_user
|
|
commands:
|
|
- docker stack deploy -c docker/deployment/stack.yml zero2prod
|
|
volumes:
|
|
- name: docker-sock
|
|
path: /var/run/docker.sock
|
|
when:
|
|
branch:
|
|
- main
|
|
|
|
image_pull_secrets:
|
|
- dockerconfig
|
|
|
|
volumes:
|
|
- name: docker-sock
|
|
host:
|
|
path: /var/run/docker.sock |