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.

Revisions

  1. @Creatiwww Creatiwww revised this gist May 14, 2020. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions .gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,6 @@ build:
    stage: build
    script:
    - 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 build
    - docker-compose push
    @@ -50,7 +49,6 @@ release:
    stage: release
    script:
    - 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 build
    - docker-compose push
  2. @Creatiwww Creatiwww created this gist May 14, 2020.
    73 changes: 73 additions & 0 deletions .gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,73 @@
    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 "EXTERNAL_SERVICE_KEY=$EXTERNAL_SERVICE_STAGE_KEY" >> .env
    - 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 "EXTERNAL_SERVICE_KEY=$EXTERNAL_SERVICE_PROD_KEY" >> .env
    - 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