Zero_to_prod_in_rust/.drone.yml

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