Skip to content

Instantly share code, notes, and snippets.

@AhmedELShafaie
Forked from Creatiwww/.gitlab-ci.yml
Created December 29, 2021 15:40
Show Gist options
  • Save AhmedELShafaie/37b9c09eb3de1a331ad3f398d1624de7 to your computer and use it in GitHub Desktop.
Save AhmedELShafaie/37b9c09eb3de1a331ad3f398d1624de7 to your computer and use it in GitHub Desktop.
image: creatiwww/docker-compose:latest
services:
- docker:dind
variables:
STAGE_SERVER_IP: 10.10.10.1
PROD_SERVER_IP: 10.10.10.2
STAGE_SERVER_USER: gitlab
PROD_SERVER_USER: gitlab
STAGE_IMAGE_APP_TAG: registry.my_organiation.org/development/amazing_app/app:stage
PROD_IMAGE_APP_TAG: registry.my_organiation.org/development/amazing_app/app:prod
EXTERNAL_SERVICE_STAGE_API_BASE_URL: https://test.some-service.com/
EXTERNAL_SERVICE_PROD_API_BASE_URL: https://some-service.com/
stages:
- build
- staging
- release
- deploy
build:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_IMAGE
- echo "IMAGE_APP_TAG=$STAGE_IMAGE_APP_TAG" >> .env
- docker-compose build
- docker-compose push
only:
- pre-prod
- master
deploy-to-stage:
stage: staging
script:
- eval $(ssh-agent -s)
- echo "$SSH_STAGE_SERVER_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_IMAGE
- echo "EXTERNAL_SERVICE_KEY=$EXTERNAL_SERVICE_STAGE_KEY" >> .env
- echo "IMAGE_APP_TAG=$STAGE_IMAGE_APP_TAG" >> .env
- docker-compose -H "ssh://$STAGE_SERVER_USER@$STAGE_SERVER_IP" down --remove-orphans
- docker-compose -H "ssh://$STAGE_SERVER_USER@$STAGE_SERVER_IP" pull
- docker-compose -H "ssh://$STAGE_SERVER_USER@$STAGE_SERVER_IP" up -d
only:
- pre-prod
- master
release:
stage: release
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_IMAGE
- echo "IMAGE_APP_TAG=$PROD_IMAGE_APP_TAG" >> .env
- docker-compose build
- docker-compose push
only:
- master
deploy-to-prod:
stage: deploy
script:
- eval $(ssh-agent -s)
- echo "$SSH_PROD_SERVER_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_IMAGE
- echo "EXTERNAL_SERVICE_KEY=$EXTERNAL_SERVICE_PROD_KEY" >> .env
- echo "IMAGE_APP_TAG=$PROD_IMAGE_APP_TAG" >> .env
- docker-compose -H "ssh://$PROD_SERVER_USER@$PROD_SERVER_IP" down --remove-orphans
- docker-compose -H "ssh://$PROD_SERVER_USER@$PROD_SERVER_IP" pull
- docker-compose -H "ssh://$PROD_SERVER_USER@$PROD_SERVER_IP" up -d
only:
- master
when: manual
@AhmedELShafaie
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment