feat(CICD): Testing gitlab-cicd registry
This commit is contained in:
@@ -5,9 +5,9 @@ stages:
|
|||||||
|
|
||||||
variables:
|
variables:
|
||||||
PIPELINE_WORK_DIR_V1: "./v1"
|
PIPELINE_WORK_DIR_V1: "./v1"
|
||||||
CONTAINER_NAME_V1: "eta-etaapi"
|
CONTAINER_NAME_V1: "etaapi"
|
||||||
PIPELINE_WORK_DIR_V2: "./v2"
|
PIPELINE_WORK_DIR_V2: "./v2"
|
||||||
CONTAINER_NAME_V2: "eta-etaapiv2"
|
CONTAINER_NAME_V2: "etaapi"
|
||||||
PUBLIC_PORT_V1: 7001
|
PUBLIC_PORT_V1: 7001
|
||||||
PRIVATE_PORT_V1: 3000
|
PRIVATE_PORT_V1: 3000
|
||||||
PUBLIC_PORT_V2: 7002
|
PUBLIC_PORT_V2: 7002
|
||||||
@@ -48,15 +48,15 @@ build-v1-job:
|
|||||||
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
||||||
<<: *generic_build_job
|
<<: *generic_build_job
|
||||||
|
|
||||||
build-v2-job:
|
# build-v2-job:
|
||||||
stage: build
|
# stage: build
|
||||||
needs: []
|
# needs: []
|
||||||
variables:
|
# variables:
|
||||||
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
||||||
CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
# CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
||||||
PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
# PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
||||||
PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
# PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
||||||
<<: *generic_build_job
|
# <<: *generic_build_job
|
||||||
|
|
||||||
upload-v1-job:
|
upload-v1-job:
|
||||||
stage: upload
|
stage: upload
|
||||||
@@ -68,15 +68,15 @@ upload-v1-job:
|
|||||||
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
||||||
<<: *generic_upload_job
|
<<: *generic_upload_job
|
||||||
|
|
||||||
upload-v2-job:
|
# upload-v2-job:
|
||||||
stage: upload
|
# stage: upload
|
||||||
needs: ["build-v2-job"]
|
# needs: ["build-v2-job"]
|
||||||
variables:
|
# variables:
|
||||||
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
||||||
CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
# CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
||||||
PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
# PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
||||||
PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
# PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
||||||
<<: *generic_upload_job
|
# <<: *generic_upload_job
|
||||||
|
|
||||||
deploy-v1-job:
|
deploy-v1-job:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
@@ -88,12 +88,12 @@ deploy-v1-job:
|
|||||||
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
||||||
<<: *generic_deploy_job
|
<<: *generic_deploy_job
|
||||||
|
|
||||||
deploy-v2-job:
|
# deploy-v2-job:
|
||||||
stage: deploy
|
# stage: deploy
|
||||||
needs: ["upload-v2-job"]
|
# needs: ["upload-v2-job"]
|
||||||
variables:
|
# variables:
|
||||||
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
# PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V2"
|
||||||
CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
# CONTAINER_NAME: "$CONTAINER_NAME_V2"
|
||||||
PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
# PUBLIC_PORT: "$PUBLIC_PORT_V2"
|
||||||
PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
# PRIVATE_PORT: "$PRIVATE_PORT_V2"
|
||||||
<<: *generic_deploy_job
|
# <<: *generic_deploy_job
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
|
REGISTRY_USER="jcruzbaas@gmail.com"
|
||||||
|
REGISTRY_NAME="registry.gitlab.com/jcruzbaasworkspace/enruta"
|
||||||
|
REGISTRY_SERVER="registry.gitlab.com"
|
||||||
|
CONTAINER_VERSION="latest"
|
||||||
|
|
||||||
# Requirements
|
# Requirements
|
||||||
# Docker: Node v18-alpine
|
# Docker: Node v18-alpine
|
||||||
function build_docker(){
|
function build_docker(){
|
||||||
|
#Global ENV VAR: REGISTRY_NAME
|
||||||
|
#Global ENV VAR: CONTAINER_NAME
|
||||||
if [[ $# -lt 1 ]]; then
|
if [[ $# -lt 1 ]]; then
|
||||||
echo $0 "[conatiner name]"
|
echo $0 "[conatiner name]"
|
||||||
return -1
|
return -1
|
||||||
@@ -11,50 +18,21 @@ function build_docker(){
|
|||||||
cat src/config/apiConfig.json > src/config/apiConfig_local.json
|
cat src/config/apiConfig.json > src/config/apiConfig_local.json
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
docker rmi -f "$AWS_ECR_REPO/$CONTAINER_NAME"
|
docker rmi -f "$REGISTRY_NAME/$CONTAINER_NAME"
|
||||||
docker buildx build --no-cache -t $AWS_ECR_REPO/$CONTAINER_NAME ./
|
docker buildx build --no-cache -t $REGISTRY_NAME/$CONTAINER_NAME ./
|
||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|
||||||
function upload_image(){
|
function upload_image(){
|
||||||
#Global ENV VAR: AWS_DEFAULT_REGION
|
#Global ENV VAR: REGISTRY_NAME
|
||||||
#Global ENV VAR: AWS_ECRWRITTER_ID
|
#Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN
|
||||||
#Global ENV VAR: AWS_ECRWRITTER_SECRET
|
|
||||||
#Global ENV VAR: AWS_ECR_USER
|
|
||||||
#Global ENV VAR: AWS_ECR_REPO
|
|
||||||
#Global ENV VAR: CONTAINER_NAME
|
#Global ENV VAR: CONTAINER_NAME
|
||||||
mkdir .aws
|
docker login $REGISTRY_SERVER -u "$REGISTRY_USER" -p "$GITLAB_CICD_REGISTRY_TOKEN"
|
||||||
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
|
set -x
|
||||||
docker push "$AWS_ECR_REPO/$CONTAINER_NAME":latest
|
docker push "$REGISTRY_NAME/$CONTAINER_NAME":$CONTAINER_VERSION
|
||||||
set +x
|
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
|
||||||
@@ -70,25 +48,24 @@ function deploy_uservice(){
|
|||||||
ecr_repo=$4
|
ecr_repo=$4
|
||||||
|
|
||||||
docker stop $container_name && docker rm $container_name
|
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(){
|
function deploy_local(){
|
||||||
# docker login --username $AWS_ECR_USER --password $DOCKER_PWD $AWS_ECR_REPO
|
# docker login --username $AWS_ECR_USER --password $DOCKER_PWD $REGISTRY_NAME
|
||||||
deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $AWS_ECR_REPO
|
deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
function deploy(){
|
function deploy(){
|
||||||
# Global Env Var: AWS_ECR_USER
|
# Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN
|
||||||
# Global Env Var: AWS_ECR_REPO
|
# Global Env Var: REGISTRY_NAME
|
||||||
|
# Global Env Var: REGISTRY_USER
|
||||||
# Global Env Var: CONTAINER_NAME
|
# Global Env Var: CONTAINER_NAME
|
||||||
# Global Env Var: PUBLIC_PORT
|
# Global Env Var: PUBLIC_PORT
|
||||||
# Global Env Var: PRIVATE_PORT
|
# Global Env Var: PRIVATE_PORT
|
||||||
# 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/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"
|
# 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
|
deploy_local
|
||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
|
REGISTRY_USER="jcruzbaas@gmail.com"
|
||||||
|
REGISTRY_NAME="registry.gitlab.com/jcruzbaasworkspace/enruta"
|
||||||
|
REGISTRY_SERVER="registry.gitlab.com"
|
||||||
|
CONTAINER_VERSION="2"
|
||||||
|
|
||||||
# Requirements
|
# Requirements
|
||||||
# Docker: Node v18-alpine
|
# Docker: Node v18-alpine
|
||||||
function build_docker(){
|
function build_docker(){
|
||||||
|
#Global ENV VAR: REGISTRY_NAME
|
||||||
|
#Global ENV VAR: CONTAINER_NAME
|
||||||
if [[ $# -lt 1 ]]; then
|
if [[ $# -lt 1 ]]; then
|
||||||
echo $0 "[conatiner name]"
|
echo $0 "[conatiner name]"
|
||||||
return -1
|
return -1
|
||||||
@@ -10,50 +17,21 @@ function build_docker(){
|
|||||||
CONTAINER_NAME=$1
|
CONTAINER_NAME=$1
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
docker rmi -f "$AWS_ECR_REPO/$CONTAINER_NAME"
|
docker rmi -f "$REGISTRY_NAME/$CONTAINER_NAME"
|
||||||
docker buildx build --no-cache -t $AWS_ECR_REPO/$CONTAINER_NAME ./
|
docker buildx build --no-cache -t $REGISTRY_NAME/$CONTAINER_NAME ./
|
||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|
||||||
function upload_image(){
|
function upload_image(){
|
||||||
#Global ENV VAR: AWS_DEFAULT_REGION
|
#Global ENV VAR: REGISTRY_NAME
|
||||||
#Global ENV VAR: AWS_ECRWRITTER_ID
|
#Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN
|
||||||
#Global ENV VAR: AWS_ECRWRITTER_SECRET
|
|
||||||
#Global ENV VAR: AWS_ECR_USER
|
|
||||||
#Global ENV VAR: AWS_ECR_REPO
|
|
||||||
#Global ENV VAR: CONTAINER_NAME
|
#Global ENV VAR: CONTAINER_NAME
|
||||||
mkdir .aws
|
docker login $REGISTRY_SERVER -u "$REGISTRY_USER" -p "$GITLAB_CICD_REGISTRY_TOKEN"
|
||||||
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
|
set -x
|
||||||
docker push "$AWS_ECR_REPO/$CONTAINER_NAME":latest
|
docker push "$REGISTRY_NAME/$CONTAINER_NAME":$CONTAINER_VERSION
|
||||||
set +x
|
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
|
||||||
@@ -69,25 +47,23 @@ function deploy_uservice(){
|
|||||||
ecr_repo=$4
|
ecr_repo=$4
|
||||||
|
|
||||||
docker stop $container_name && docker rm $container_name
|
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(){
|
function deploy_local(){
|
||||||
# docker login --username $AWS_ECR_USER --password $DOCKER_PWD $AWS_ECR_REPO
|
# docker login --username $AWS_ECR_USER --password $DOCKER_PWD $REGISTRY_NAME
|
||||||
deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $AWS_ECR_REPO
|
deploy_uservice $CONTAINER_NAME $PUBLIC_PORT $PRIVATE_PORT $REGISTRY_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
function deploy(){
|
function deploy(){
|
||||||
# Global Env Var: AWS_ECR_USER
|
# Global ENV VAR: GITLAB_CICD_REGISTRY_TOKEN
|
||||||
# Global Env Var: AWS_ECR_REPO
|
# Global Env Var: REGISTRY_NAME
|
||||||
|
# Global Env Var: REGISTRY_USER
|
||||||
# Global Env Var: CONTAINER_NAME
|
# Global Env Var: CONTAINER_NAME
|
||||||
# Global Env Var: PUBLIC_PORT
|
# Global Env Var: PUBLIC_PORT
|
||||||
# Global Env Var: PRIVATE_PORT
|
# Global Env Var: PRIVATE_PORT
|
||||||
# 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/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"
|
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"
|
||||||
#deploy_local
|
|
||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user