From 2cd5d4d6ef24789908239318638ca63b45bb3b6d Mon Sep 17 00:00:00 2001 From: Josepablo C Date: Tue, 10 Sep 2024 23:11:47 -0600 Subject: [PATCH] feat(CICD): Testing gitlab-cicd registry --- .gitlab-ci.yml | 58 +++++++++++++++++----------------- v1/scripts/ci_functions.sh | 65 ++++++++++++-------------------------- v2/scripts/ci_functions.sh | 64 ++++++++++++------------------------- 3 files changed, 70 insertions(+), 117 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2055333..83bb799 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,9 +5,9 @@ stages: variables: PIPELINE_WORK_DIR_V1: "./v1" - CONTAINER_NAME_V1: "eta-etaapi" + CONTAINER_NAME_V1: "etaapi" PIPELINE_WORK_DIR_V2: "./v2" - CONTAINER_NAME_V2: "eta-etaapiv2" + CONTAINER_NAME_V2: "etaapi" PUBLIC_PORT_V1: 7001 PRIVATE_PORT_V1: 3000 PUBLIC_PORT_V2: 7002 @@ -48,15 +48,15 @@ build-v1-job: PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_build_job -build-v2-job: - stage: build - needs: [] - variables: - PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" - CONTAINER_NAME: "$CONTAINER_NAME_V2" - PUBLIC_PORT: "$PUBLIC_PORT_V2" - PRIVATE_PORT: "$PRIVATE_PORT_V2" - <<: *generic_build_job +# build-v2-job: +# stage: build +# needs: [] +# variables: +# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" +# CONTAINER_NAME: "$CONTAINER_NAME_V2" +# PUBLIC_PORT: "$PUBLIC_PORT_V2" +# PRIVATE_PORT: "$PRIVATE_PORT_V2" +# <<: *generic_build_job upload-v1-job: stage: upload @@ -68,15 +68,15 @@ upload-v1-job: PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_upload_job -upload-v2-job: - stage: upload - needs: ["build-v2-job"] - variables: - PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" - CONTAINER_NAME: "$CONTAINER_NAME_V2" - PUBLIC_PORT: "$PUBLIC_PORT_V2" - PRIVATE_PORT: "$PRIVATE_PORT_V2" - <<: *generic_upload_job +# upload-v2-job: +# stage: upload +# needs: ["build-v2-job"] +# variables: +# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" +# CONTAINER_NAME: "$CONTAINER_NAME_V2" +# PUBLIC_PORT: "$PUBLIC_PORT_V2" +# PRIVATE_PORT: "$PRIVATE_PORT_V2" +# <<: *generic_upload_job deploy-v1-job: stage: deploy @@ -88,12 +88,12 @@ deploy-v1-job: PRIVATE_PORT: "$PRIVATE_PORT_V1" <<: *generic_deploy_job -deploy-v2-job: - stage: deploy - needs: ["upload-v2-job"] - variables: - PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" - CONTAINER_NAME: "$CONTAINER_NAME_V2" - PUBLIC_PORT: "$PUBLIC_PORT_V2" - PRIVATE_PORT: "$PRIVATE_PORT_V2" - <<: *generic_deploy_job +# deploy-v2-job: +# stage: deploy +# needs: ["upload-v2-job"] +# variables: +# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2" +# CONTAINER_NAME: "$CONTAINER_NAME_V2" +# PUBLIC_PORT: "$PUBLIC_PORT_V2" +# PRIVATE_PORT: "$PRIVATE_PORT_V2" +# <<: *generic_deploy_job diff --git a/v1/scripts/ci_functions.sh b/v1/scripts/ci_functions.sh index 492fd00..93a6710 100644 --- a/v1/scripts/ci_functions.sh +++ b/v1/scripts/ci_functions.sh @@ -1,8 +1,15 @@ #! /bin/bash +REGISTRY_USER="jcruzbaas@gmail.com" +REGISTRY_NAME="registry.gitlab.com/jcruzbaasworkspace/enruta" +REGISTRY_SERVER="registry.gitlab.com" +CONTAINER_VERSION="latest" + # Requirements # Docker: Node v18-alpine function build_docker(){ + #Global ENV VAR: REGISTRY_NAME + #Global ENV VAR: CONTAINER_NAME if [[ $# -lt 1 ]]; then echo $0 "[conatiner name]" return -1 @@ -11,50 +18,21 @@ function build_docker(){ cat src/config/apiConfig.json > src/config/apiConfig_local.json set -x - docker rmi -f "$AWS_ECR_REPO/$CONTAINER_NAME" - docker buildx build --no-cache -t $AWS_ECR_REPO/$CONTAINER_NAME ./ + docker rmi -f "$REGISTRY_NAME/$CONTAINER_NAME" + docker buildx build --no-cache -t $REGISTRY_NAME/$CONTAINER_NAME ./ 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: REGISTRY_NAME + #Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN #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 + docker login $REGISTRY_SERVER -u "$REGISTRY_USER" -p "$GITLAB_CICD_REGISTRY_TOKEN" set -x - docker push "$AWS_ECR_REPO/$CONTAINER_NAME":latest + docker push "$REGISTRY_NAME/$CONTAINER_NAME":$CONTAINER_VERSION 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 @@ -70,25 +48,24 @@ function deploy_uservice(){ ecr_repo=$4 docker stop $container_name && docker rm $container_name - docker run -p"$public_port:$private_port" -d --restart unless-stopped --name $container_name $ecr_repo/$container_name:latest + docker run -p"$public_port:$private_port" -d --restart unless-stopped --name $container_name $ecr_repo/$container_name:$CONTAINER_VERSION } function deploy_local(){ - # docker login --username $AWS_ECR_USER --password $DOCKER_PWD $AWS_ECR_REPO - deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $AWS_ECR_REPO + # docker login --username $AWS_ECR_USER --password $DOCKER_PWD $REGISTRY_NAME + deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME } function deploy(){ - # Global Env Var: AWS_ECR_USER - # Global Env Var: AWS_ECR_REPO + # Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN + # Global Env Var: REGISTRY_NAME + # Global Env Var: REGISTRY_USER # Global Env Var: CONTAINER_NAME # Global Env Var: PUBLIC_PORT # Global Env Var: PRIVATE_PORT - # Global Env Var: AWS_ECR_REPO # Global Env Var: SYSTEM_HOSTNAME - prepare_deployment set -x - ssh -i ~/.ssh/gitlab_runner 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 + # ssh -i ~/.ssh/gitlab_runner gitlab-runner@$SYSTEM_HOSTNAME "docker login $REGISTRY_SERVER --username $REGISTRY_USER --password $GITLAB_CICD_REGISTRY_TOKEN && ./deploy_uservice.sh $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME && exit" + deploy_local set +x } diff --git a/v2/scripts/ci_functions.sh b/v2/scripts/ci_functions.sh index 19a8967..8eb5b33 100644 --- a/v2/scripts/ci_functions.sh +++ b/v2/scripts/ci_functions.sh @@ -1,8 +1,15 @@ #! /bin/bash +REGISTRY_USER="jcruzbaas@gmail.com" +REGISTRY_NAME="registry.gitlab.com/jcruzbaasworkspace/enruta" +REGISTRY_SERVER="registry.gitlab.com" +CONTAINER_VERSION="2" + # Requirements # Docker: Node v18-alpine function build_docker(){ + #Global ENV VAR: REGISTRY_NAME + #Global ENV VAR: CONTAINER_NAME if [[ $# -lt 1 ]]; then echo $0 "[conatiner name]" return -1 @@ -10,50 +17,21 @@ function build_docker(){ CONTAINER_NAME=$1 set -x - docker rmi -f "$AWS_ECR_REPO/$CONTAINER_NAME" - docker buildx build --no-cache -t $AWS_ECR_REPO/$CONTAINER_NAME ./ + docker rmi -f "$REGISTRY_NAME/$CONTAINER_NAME" + docker buildx build --no-cache -t $REGISTRY_NAME/$CONTAINER_NAME ./ 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: REGISTRY_NAME + #Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN #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 + docker login $REGISTRY_SERVER -u "$REGISTRY_USER" -p "$GITLAB_CICD_REGISTRY_TOKEN" set -x - docker push "$AWS_ECR_REPO/$CONTAINER_NAME":latest + docker push "$REGISTRY_NAME/$CONTAINER_NAME":$CONTAINER_VERSION 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 @@ -69,25 +47,23 @@ function deploy_uservice(){ ecr_repo=$4 docker stop $container_name && docker rm $container_name - docker run -p"$public_port:$private_port" -d --restart unless-stopped --name $container_name $ecr_repo/$container_name:latest + docker run -p"$public_port:$private_port" -d --restart unless-stopped --name $container_name $ecr_repo/$container_name:$CONTAINER_VERSION } function deploy_local(){ - # docker login --username $AWS_ECR_USER --password $DOCKER_PWD $AWS_ECR_REPO - deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $AWS_ECR_REPO + # docker login --username $AWS_ECR_USER --password $DOCKER_PWD $REGISTRY_NAME + deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME } function deploy(){ - # Global Env Var: AWS_ECR_USER - # Global Env Var: AWS_ECR_REPO + # Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN + # Global Env Var: REGISTRY_NAME + # Global Env Var: REGISTRY_USER # Global Env Var: CONTAINER_NAME # Global Env Var: PUBLIC_PORT # Global Env Var: PRIVATE_PORT - # Global Env Var: AWS_ECR_REPO # Global Env Var: SYSTEM_HOSTNAME - prepare_deployment set -x - ssh -i ~/.ssh/gitlab_runner 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 + ssh -i ~/.ssh/gitlab_runner gitlab-runner@$SYSTEM_HOSTNAME "docker login $REGISTRY_SERVER --username $REGISTRY_USER --password $GITLAB_CICD_REGISTRY_TOKEN $REGISTRY_NAME && ./deploy_uservice.sh $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME && exit" set +x }