feat: Adding dev/prod ci/cd with deploy using Dokploy registry

This commit is contained in:
Josepablo C
2025-09-08 20:31:16 -06:00
parent 0cc27afa0d
commit 7efec5e4dd
2 changed files with 70 additions and 65 deletions

View File

@@ -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

View File

@@ -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
} }