Skip to content

Instantly share code, notes, and snippets.

@taufiqpsumarna
Last active August 29, 2022 09:25
Show Gist options
  • Save taufiqpsumarna/8db65f16278d242cbeb3732ab056c506 to your computer and use it in GitHub Desktop.
Save taufiqpsumarna/8db65f16278d242cbeb3732ab056c506 to your computer and use it in GitHub Desktop.
Gitlab CI/CD Push To ECR and Deploy To Server Use Docker-Compose
#This Pipeline Created By Taufiq
#App Image Information
variables:
FRONTEND_APP: idswp-frontend
FRONTEND_PATH: ./client
BACKEND_APP: idswp-backend
BACKEND_PATH: ./server
#Docker Dind Information
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
#Define Stage
stages:
- build
- test
- deploy
#Define Build Job
docker_build_backend:
stage: build
image: docker:22.06-rc
services:
- docker:22.06-rc-dind
before_script:
- apk add --no-cache curl jq python3 py3-pip
- pip install awscliv2 && alias aws='awsv2'
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region $AWS_DEFAULT_REGION
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY
- aws --version
- docker info
- docker --version
script:
- docker build -t $BACKEND_APP:latest $BACKEND_PATH
- docker tag $BACKEND_APP $DOCKER_REGISTRY/$BACKEND_APP:latest
- docker tag $BACKEND_APP $DOCKER_REGISTRY/$BACKEND_APP:$CI_JOB_ID
- docker push $DOCKER_REGISTRY/$BACKEND_APP:latest
- docker push $DOCKER_REGISTRY/$BACKEND_APP:$CI_JOB_ID
docker_build_frontend:
stage: build
image: docker:22.06-rc
services:
- docker:22.06-rc-dind
before_script:
- apk add --no-cache curl jq python3 py3-pip
- pip install awscliv2 && alias aws='awsv2'
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region $AWS_DEFAULT_REGION
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY
- aws --version
- docker info
- docker --version
script:
- docker build -t $FRONTEND_APP:latest $FRONTEND_PATH
- docker tag $FRONTEND_APP $DOCKER_REGISTRY/$FRONTEND_APP:latest
- docker tag $FRONTEND_APP $DOCKER_REGISTRY/$FRONTEND_APP:$CI_JOB_ID
- docker push $DOCKER_REGISTRY/$FRONTEND_APP:latest
- docker push $DOCKER_REGISTRY/$FRONTEND_APP:$CI_JOB_ID
#Define Test Job
#Define Deploy Job
##Setup the variable on gitlab
#AWS_ACCESS_KEY_ID
#AWS_DEFAULT_REGION
#AWS_SECRET_ACCESS_KEY
#DOCKER_REGISTRY

CI / CD Flow

  1. Build
  2. Push To ECR
  3. Deploy To Staging Server With Docker Installed
  4. Deploy To Production Server With Docker Installed

Notes:

  1. You Must Setup Variable in Gitlab.
  • AWS_ACCESS_KEY_ID = AWS IAM ACCESS KEY
  • AWS_SECRET_ACCESS_KEY = AWS IAM SECRET KEY
  • AWS_DEFAULT_REGION = AWS IAM DEFAULT REGION (Use same as ECR Region)
  • DOCKER_REGISTRY = AWS ECR URI (<aws_account_number.dkr.ecr.<aws_region>.amazonaws.com)
  1. You Must Create AWS ECR For store Docker Image.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment