fix(CI): Adding image upload stage

This commit is contained in:
Josepablo C
2024-02-20 21:56:51 -06:00
parent bf104a4b78
commit 9a829ccab3
2 changed files with 49 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
stages: stages:
- build - build
- upload
- deploy - deploy
variables: variables:
@@ -18,6 +19,14 @@ build-job:
only: only:
- master - master
upload-job:
stage: upload
script:
- . ./scripts/ci_functions.sh
- upload_image
only:
- master
deploy-job: deploy-job:
stage: deploy stage: deploy
script: script:

View File

@@ -16,6 +16,45 @@ function build_docker(){
set +x 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(){ function deploy_uservice(){
# CONTAINER NAME # CONTAINER NAME
# PUBLIC PORT # PUBLIC PORT
@@ -47,6 +86,7 @@ function deploy(){
# Global Env Var: PRIVATE_PORT # Global Env Var: PRIVATE_PORT
# Global Env Var: AWS_ECR_REPO # Global Env Var: AWS_ECR_REPO
# Global Env Var: SYSTEM_HOSTNAME # Global Env Var: SYSTEM_HOSTNAME
prepare_deployment
set -x 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" 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 #deploy_local