#! /bin/bash REGISTRY_USER="registry" REGISTRY_NAME="registry.cloud.etaviaporte.com" REGISTRY_SERVER="registry.cloud.etaviaporte.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 fi CONTAINER_NAME=$1 cat src/config/apiConfig.json > src/config/apiConfig_local.json set -x 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: REGISTRY_NAME #Global ENV VAR: CICD_REGISTRY_TOKEN #Global ENV VAR: CONTAINER_NAME docker login $REGISTRY_SERVER -u "$REGISTRY_USER" -p "$CICD_REGISTRY_TOKEN" set -x docker push "$REGISTRY_NAME/$CONTAINER_NAME":$CONTAINER_VERSION set +x } function deploy_uservice(){ # CONTAINER NAME # PUBLIC PORT # PRIVATE PORT # ECR REPO if [[ $# -lt 4 ]]; then echo "$0 [container_name] [public port] [private port] [ecr_repo]" return -1 fi container_name=$1 public_port=$2 private_port=$3 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:$CONTAINER_VERSION } function deploy_local(){ # 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: 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: SYSTEM_HOSTNAME set -x # 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 }