feat: Adding dev/prod ci/cd with deploy using Dokploy registry
This commit is contained in:
@@ -1,58 +1,88 @@
|
|||||||
stages:
|
stages:
|
||||||
- build
|
- build
|
||||||
- upload
|
- upload
|
||||||
|
- deploy
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
PIPELINE_WORK_DIR_V1: "./v1"
|
PIPELINE_WORK_DIR_PROD: "./v1"
|
||||||
CONTAINER_NAME_V1: "etaapi"
|
PIPELINE_WORK_DIR_DEV: "./v1"
|
||||||
PIPELINE_WORK_DIR_V2: "./v2"
|
CONTAINER_NAME_PROD: "etaapi_prod"
|
||||||
CONTAINER_NAME_V2: "etaapi"
|
CONTAINER_NAME_DEV: "etaapi_dev"
|
||||||
PUBLIC_PORT_V1: 7001
|
|
||||||
PRIVATE_PORT_V1: 3000
|
|
||||||
PUBLIC_PORT_V2: 7002
|
|
||||||
PRIVATE_PORT_V2: 3000
|
|
||||||
|
|
||||||
.generic_build_job: &generic_build_job
|
.generic_build_job: &generic_build_job
|
||||||
script:
|
script:
|
||||||
- cd $PIPELINE_WORK_DIR
|
- cd $PIPELINE_WORK_DIR
|
||||||
- . ./scripts/ci_functions.sh
|
- . ./scripts/ci_functions.sh
|
||||||
- build_docker $CONTAINER_NAME
|
- build_docker $CONTAINER_NAME
|
||||||
only:
|
|
||||||
- master
|
|
||||||
|
|
||||||
.generic_upload_job: &generic_upload_job
|
.generic_upload_job: &generic_upload_job
|
||||||
script:
|
script:
|
||||||
- cd $PIPELINE_WORK_DIR
|
- cd $PIPELINE_WORK_DIR
|
||||||
- . ./scripts/ci_functions.sh
|
- . ./scripts/ci_functions.sh
|
||||||
- upload_image
|
- upload_image
|
||||||
only:
|
|
||||||
- master
|
|
||||||
|
|
||||||
.generic_deploy_job: &generic_deploy_job
|
build-prod-job:
|
||||||
script:
|
|
||||||
- cd $PIPELINE_WORK_DIR
|
|
||||||
- . ./scripts/ci_functions.sh
|
|
||||||
- deploy
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
|
|
||||||
|
|
||||||
build-v1-job:
|
|
||||||
stage: build
|
stage: build
|
||||||
needs: []
|
needs: []
|
||||||
variables:
|
variables:
|
||||||
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V1"
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_PROD"
|
||||||
CONTAINER_NAME: "$CONTAINER_NAME_V1"
|
CONTAINER_NAME: "$CONTAINER_NAME_PROD"
|
||||||
PUBLIC_PORT: "$PUBLIC_PORT_V1"
|
only:
|
||||||
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
- master
|
||||||
<<: *generic_build_job
|
<<: *generic_build_job
|
||||||
|
|
||||||
upload-v1-job:
|
upload-prod-job:
|
||||||
stage: upload
|
stage: upload
|
||||||
needs: ["build-v1-job"]
|
needs: ["build-prod-job"]
|
||||||
variables:
|
variables:
|
||||||
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_V1"
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_PROD"
|
||||||
CONTAINER_NAME: "$CONTAINER_NAME_V1"
|
CONTAINER_NAME: "$CONTAINER_NAME_PROD"
|
||||||
PUBLIC_PORT: "$PUBLIC_PORT_V1"
|
only:
|
||||||
PRIVATE_PORT: "$PRIVATE_PORT_V1"
|
- master
|
||||||
<<: *generic_upload_job
|
<<: *generic_upload_job
|
||||||
|
|
||||||
|
deploy-prod-job:
|
||||||
|
stage: deploy
|
||||||
|
needs: ["upload-prod-job"]
|
||||||
|
variables:
|
||||||
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_PROD"
|
||||||
|
CONTAINER_NAME: "$CONTAINER_NAME_PROD"
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- cd $PIPELINE_WORK_DIR
|
||||||
|
- . ./scripts/ci_functions.sh
|
||||||
|
- deploy_prod
|
||||||
|
|
||||||
|
build-dev-job:
|
||||||
|
stage: build
|
||||||
|
needs: []
|
||||||
|
variables:
|
||||||
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_DEV"
|
||||||
|
CONTAINER_NAME: "$CONTAINER_NAME_DEV"
|
||||||
|
only:
|
||||||
|
- develop
|
||||||
|
<<: *generic_build_job
|
||||||
|
|
||||||
|
upload-dev-job:
|
||||||
|
stage: upload
|
||||||
|
needs: ["build-dev-job"]
|
||||||
|
variables:
|
||||||
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_DEV"
|
||||||
|
CONTAINER_NAME: "$CONTAINER_NAME_DEV"
|
||||||
|
only:
|
||||||
|
- develop
|
||||||
|
<<: *generic_upload_job
|
||||||
|
|
||||||
|
deploy-dev-job:
|
||||||
|
stage: deploy
|
||||||
|
needs: ["upload-dev-job"]
|
||||||
|
variables:
|
||||||
|
PIPELINE_WORK_DIR: "$PIPELINE_WORK_DIR_DEV"
|
||||||
|
CONTAINER_NAME: "$CONTAINER_NAME_DEV"
|
||||||
|
only:
|
||||||
|
- develop
|
||||||
|
script:
|
||||||
|
- cd $PIPELINE_WORK_DIR
|
||||||
|
- . ./scripts/ci_functions.sh
|
||||||
|
- deploy_dev
|
||||||
|
|||||||
@@ -33,39 +33,14 @@ function upload_image(){
|
|||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|
||||||
function deploy_uservice(){
|
function deploy_prod(){
|
||||||
# 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
|
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"
|
echo "Not yet defined"
|
||||||
deploy_local
|
set +x
|
||||||
|
}
|
||||||
|
|
||||||
|
function deploy_dev(){
|
||||||
|
set -x
|
||||||
|
echo "Not yet defined"
|
||||||
set +x
|
set +x
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user