From 9a829ccab3de50cd48b9facd36d5a6378dfb9378 Mon Sep 17 00:00:00 2001 From: Josepablo C Date: Tue, 20 Feb 2024 21:56:51 -0600 Subject: [PATCH] fix(CI): Adding image upload stage --- .gitlab-ci.yml | 9 +++++++++ scripts/ci_functions.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f5cb41..6ca7e6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ stages: - build + - upload - deploy variables: @@ -18,6 +19,14 @@ build-job: only: - master +upload-job: + stage: upload + script: + - . ./scripts/ci_functions.sh + - upload_image + only: + - master + deploy-job: stage: deploy script: diff --git a/scripts/ci_functions.sh b/scripts/ci_functions.sh index 5d04a0a..c8ffe3e 100755 --- a/scripts/ci_functions.sh +++ b/scripts/ci_functions.sh @@ -16,6 +16,45 @@ function build_docker(){ set +x } +function upload_image(){ + #Global ENV VAR: AWS_DEFAULT_REGION + #Global ENV VAR: AWS_ECRWRITTER_ID + #Global ENV VAR: AWS_ECRWRITTER_SECRET + #Global ENV VAR: AWS_ECR_USER + #Global ENV VAR: AWS_ECR_REPO + #Global ENV VAR: CONTAINER_NAME + mkdir .aws + echo "[default]" > ./.aws/config + echo "region = $AWS_DEFAULT_REGION" >> ./.aws/config + echo "output = json" >> ./.aws/config + echo "[default]" > ./.aws/credentials + echo "aws_access_key_id = $AWS_ECRWRITTER_ID" >> ./.aws/credentials + echo "aws_secret_access_key = $AWS_ECRWRITTER_SECRET" >> ./.aws/credentials + DOCKER_PWD=$(docker run --rm -v ./.aws/:/root/.aws amazon/aws-cli ecr get-login-password) + rm -rf ./.aws + docker login -u $AWS_ECR_USER -p $DOCKER_PWD $AWS_ECR_REPO + set -x + docker push "$AWS_ECR_REPO/$CONTAINER_NAME":latest + set +x +} + +function prepare_deployment(){ + # Global Env Var: AWS_DEFAULT_REGION + # Global Env Var: AWS_ECRWRITTER_ID + # Global Env Var: AWS_ECRWRITTER_SECRET + # Global Env Var: SYSTEM_HOSTNAME + #Generate Docker Access Token + mkdir .aws + echo "[default]" > ./.aws/config + echo "region = $AWS_DEFAULT_REGION" >> ./.aws/config + echo "output = json" >> ./.aws/config + echo "[default]" > ./.aws/credentials + echo "aws_access_key_id = $AWS_ECRWRITTER_ID" >> ./.aws/credentials + echo "aws_secret_access_key = $AWS_ECRWRITTER_SECRET" >> ./.aws/credentials + export DOCKER_PWD=$(docker run --rm -v ./.aws/:/root/.aws amazon/aws-cli ecr get-login-password) + rm -rf ./.aws +} + function deploy_uservice(){ # CONTAINER NAME # PUBLIC PORT @@ -47,6 +86,7 @@ function deploy(){ # Global Env Var: PRIVATE_PORT # Global Env Var: AWS_ECR_REPO # Global Env Var: SYSTEM_HOSTNAME + prepare_deployment set -x ssh -i ~/.ssh/id_rsa gitlab-runner@$SYSTEM_HOSTNAME "docker login --username $AWS_ECR_USER --password $DOCKER_PWD $AWS_ECR_REPO && ./deploy_uservice.sh $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $AWS_ECR_REPO && exit" #deploy_local