gitlab-ci

PHOTO EMBED

Fri Aug 04 2023 03:35:39 GMT+0000 (Coordinated Universal Time)

Saved by @namnt

variables:
    APP_NAME: app_name
    DOCKER_HUB_PULL: hub.vtcc.vn:8989
    DOCKER_HUB_PUSH: hub.vtcc.vn:8999
    OUTPUT_IMAGE_TAG: $DOCKER_HUB_PUSH/vtcc/chatbot/$APP_NAME
    DOCKER_HUB_USER: vtcc
    DOCKER_HUB_PASS: vtcc@2017
    SSH_SKIP_VERIFY: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"


stages:
    - build
    - build_image
    - deploy


.template_build: &build_tmp
    stage: build
    variables:
        MODULE: module
        JAR_FILE: jar_file_name
        DOCKER_FILE: path_to_docker_file
    script:
        - javapath=$(ls /usr/lib/jvm | grep -m1 java-11-openjdk)
        - export JAVA_HOME="/usr/lib/jvm/$javapath"
        - export PATH=$JAVA_HOME/bin:$PATH
        - mvn clean package -B -Dmaven.test.skip=true
        - mkdir -p artifacts/$APP_NAME/target
        - cp $MODULE/target/$JAR_FILE artifacts/$APP_NAME/target
        - cp $MODULE/$DOCKER_FILE artifacts/$APP_NAME

    artifacts:
        expire_in: 1 day
        paths:
            - artifacts
    tags:
        - build

.template_build_image: &build_image_tmp
    stage: build_image
    script:
        - cd artifacts/$APP_NAME
        - ls -l
        - LOG=$(docker build .)
        - IMAGE_ID=$(echo $LOG | awk -F"Successfully built" '{print $2}')
        - echo "IMAGE_ID:" $IMAGE_ID
        - docker tag $IMAGE_ID $OUTPUT_IMAGE_TAG:latest
        - docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASS $DOCKER_HUB_PUSH
        - docker push $OUTPUT_IMAGE_TAG:latest

    artifacts:
        expire_in: 1 day
    tags:
        - docker-build

.template_deploy_docker: &deploy_docker_tmp
    stage: deploy
    variables:
        DEPLOY_USER: deploy_user
        DEPLOY_HOST: deploy_host
        DEPLOY_PATH: deploy_path
        CONF_PATH: config_path
        DOCKER_COMPOSE_PATH: docker_compose_path
    script:
        - echo 'Deploy to' $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH
        - ssh $SSH_SKIP_VERIFY -tt $DEPLOY_USER@$DEPLOY_HOST "mkdir -p $DEPLOY_PATH"
        - ssh $SSH_SKIP_VERIFY -tt $DEPLOY_USER@$DEPLOY_HOST "mkdir -p $DEPLOY_PATH/config"
        - ssh $SSH_SKIP_VERIFY -tt $DEPLOY_USER@$DEPLOY_HOST "cd $DEPLOY_PATH && docker-compose down || true"
        - scp $SSH_SKIP_VERIFY $DOCKER_COMPOSE_PATH $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/docker-compose.yml
#        - scp $SSH_SKIP_VERIFY -r $CONF_PATH $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/config
        - 'rsync -e "ssh -o StrictHostKeyChecking=no" -aii --recursive --delete $CONF_PATH/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/config/'
        - ssh $SSH_SKIP_VERIFY -tt $DEPLOY_USER@$DEPLOY_HOST "cd $DEPLOY_PATH && docker-compose pull && docker-compose up -d"
    tags:
        - deploy

build_dev_bitel:
    <<: *build_tmp
    variables:
        MODULE: bitel
        JAR_FILE: bitel-0.0.1-SNAPSHOT.jar
        APP_NAME: bitel-gateway
        DOCKER_FILE: Dockerfile
    only:
        refs:
            - bitel

build_image_dev_bitel:
    <<: *build_image_tmp
    variables:
        APP_NAME: bitel-gateway
    dependencies:
        - build_dev_bitel
    only:
        refs:
            - bitel

deploy_dev_bitel:
    <<: *deploy_docker_tmp
    variables:
        DEPLOY_USER: platform
        DEPLOY_HOST: 192.168.101.43
        DEPLOY_PATH: /home/platform/bitel/deploy
        CONF_PATH: bitel/src/main/resources/
        DOCKER_COMPOSE_PATH: bitel/docker-compose.yml
    dependencies:
        - build_image_dev_bitel
    only:
        refs:
            - bitel


#Test-tool
build_test_bot_dev:
    <<: *build_tmp
    variables:
        MODULE: test_bot
        JAR_FILE: test_bot-0.0.1-SNAPSHOT.jar
        APP_NAME: test-tool
        DOCKER_FILE: Dockerfile
    only:
        refs:
            - feature/test_tool_dev

build_image_test_bot_dev:
    <<: *build_image_tmp
    variables:
        APP_NAME: test-tool
    dependencies:
        - build_test_bot_dev
    only:
        refs:
            - feature/test_tool_dev

deploy_test_bot_dev:
    <<: *deploy_docker_tmp
    variables:
        DEPLOY_USER: platform
        DEPLOY_HOST: 192.168.101.43
        DEPLOY_PATH: /home/platform/test-tool/deploy
        CONF_PATH: test_bot/src/main/resources/
        DOCKER_COMPOSE_PATH: test_bot/docker-compose.yml
    dependencies:
        - build_image_test_bot_dev
    only:
        refs:
            - feature/test_tool_dev

# CYBERBOT-CMS-HCC
build_CYBERBOT_CMS_HCC_dev:
    <<: *build_tmp
    variables:
        MODULE: Cyberbot_CMS_HCC
        JAR_FILE: Cyberbot_CMS_HCC-0.0.1-SNAPSHOT.jar
        APP_NAME: cyberbot-cms-hcc
        DOCKER_FILE: Dockerfile
    only:
        refs:
            - cyberbot-CMS-HCC-dev

build_image_CYBERBOT_CMS_HCC_dev:
    <<: *build_image_tmp
    variables:
        APP_NAME: cyberbot-cms-hcc
    dependencies:
        - build_CYBERBOT_CMS_HCC_dev
    only:
        refs:
            - cyberbot-CMS-HCC-dev

deploy_CYBERBOT_CMS_HCC_dev:
    <<: *deploy_docker_tmp
    variables:
        DEPLOY_USER: platform
        DEPLOY_HOST: 192.168.101.43
        DEPLOY_PATH: /home/platform/cyberbot-cms-hcc/deploy
        CONF_PATH: Cyberbot_CMS_HCC/src/main/resources
        DOCKER_COMPOSE_PATH: Cyberbot_CMS_HCC/docker-compose.yml
    dependencies:
        - build_image_CYBERBOT_CMS_HCC_dev
    only:
        refs:
            - cyberbot-CMS-HCC-dev

################################ CQCT ################################
build_CQCT_dev:
    <<: *build_tmp
    variables:
        MODULE: cqct
        JAR_FILE: cqct-0.0.1-SNAPSHOT.jar
        APP_NAME: cyberbot-cqct
        DOCKER_FILE: Dockerfile
    only:
        refs:
            - cqct-dev

build_image_CQCT_dev:
    <<: *build_image_tmp
    variables:
        APP_NAME: cyberbot-cqct
    dependencies:
        - build_CQCT_dev
    only:
        refs:
            - cqct-dev

deploy_CQCT_dev:
    <<: *deploy_docker_tmp
    variables:
        DEPLOY_USER: platform
        DEPLOY_HOST: 192.168.101.43
        DEPLOY_PATH: /home/platform/cqct/deploy
        CONF_PATH: cqct/src/main/resources
        DOCKER_COMPOSE_PATH: cqct/docker-compose-dev.yml
    dependencies:
        - build_image_CQCT_dev
    only:
        refs:
            - cqct-dev
#---- prod ----#
build_CQCT_prod:
    <<: *build_tmp
    variables:
        MODULE: cqct
        JAR_FILE: cqct-0.0.1-SNAPSHOT.jar
        APP_NAME: cyberbot-cqct
        DOCKER_FILE: Dockerfile
    only:
        refs:
            - cqct

build_image_CQCT_prod:
    <<: *build_image_tmp
    variables:
        APP_NAME: cyberbot-cqct
    dependencies:
        - build_CQCT_prod
    only:
        refs:
            - cqct

deploy_CQCT_prod:
    <<: *deploy_docker_tmp
    variables:
        DEPLOY_USER: platform
        DEPLOY_HOST: 10.30.154.235
        DEPLOY_PATH: /home/platform/cqct/deploy
        CONF_PATH: cqct/src/main/resources
        DOCKER_COMPOSE_PATH: cqct/docker-compose-prod.yml
    dependencies:
        - build_image_CQCT_prod
    only:
        refs:
            - cqct

content_copyCOPY