stages:
- PROD
- STAGE
- DEVelop
variables:
Helth_etalon: "hello world"
PROD-general:
environment:
name: brands
stage: PROD
tags:
- "brands"
when: manual #always
# except:
# changes:
# - "*.yml"
only:
- master
variables:
ENV_FILE: ".env"
HOSTDNS: "ksi.kiev.ua"
extends: .build-prod
.incrementbuildnumber:
before_script:
- echo "------------------ increment ---------------------------"
- echo "BUILDNumber_major == ${build_number_major}"
- echo ${CI_PIPELINE_ID}
- FullTagVersion="${build_number_major}.${CI_PIPELINE_ID}"
- echo "FullTagVersion ==== $FullTagVersion"
- export RATEBUILDVERSION=$FullTagVersion
- echo $RATEBUILDVERSION > $CI_PROJECT_DIR/bildver.txt
- echo $RATEBUILDVERSION
&& sed -i "s/version/$RATEBUILDVERSION/g" index.html
&& cat index.html
.build:
extends:
- .incrementbuildnumber
- .report
script:
- echo "----------------------- build task DEV ${HOSTDNS} -----------------------------------"
- hostip=$(curl ifconfig.me)
- echo "-------DEPLOY TO SERVER:----- $hostip ---------------------"
- docker-compose down && sleep 10
- docker system prune -af --filter "until=1h"
- rm -rf /home/services/app
- mkdir -p /home/services/app/
- mv ../trades /home/services/ && cd /home/services/app
- mkdir -p /home/services/app/infra/trades/log/nginx
- docker-compose build app-app
- docker-compose up -d app-app
.report:
after_script:
- echo "-----------------after_script --- report ----------------"
- VERSION=$(cat $CI_PROJECT_DIR/bildver.txt)
- if [[ ${HOSTDNS} != "ksi.kiev.ua" ]]; then ssh $RUNNER_GITLAB@$IP_SERVER "export PROJECT=${PROJECT} && echo $PROJECT
&& export PROJECT_PATH=${PROJECT_PATH} && echo $PROJECT_PATH
&& export BRANCH_PATH=${BRANCH_PATH}
&& export CI_JOB_STAGE=${CI_JOB_STAGE}
&& export GITLAB_USER_NAME=${GITLAB_USER_NAME}
&& export CI_PIPELINE_ID=$(echo ${CI_PIPELINE_ID})
&& export VERSION=$(echo $VERSION)
&& export TYPECODE="PHP"
&& chmod +x $PATH_CREDENTIALS/check_logs_svc.sh
Cat Dockerfile:
FROM node:12.4-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
COPY . .
Cat docker-compose.yml
version: "3.9"
services:
trade-app:
image: trade:PROD-${RATEBUILDVERSION}
build:
context: .
dockerfile: ./Dockerfile-prod
# ports:
# - "8080:8080"
entrypoint: sh -c "npm install && npm run prod && rm -rf distcopy/* && cp -r dist/* distcopy/ && sleep 20"
volumes:
- ../www/:/usr/src/app/distcopy
extra_hosts:
- "trades.brocrm.com:127.0.0.1"
container_name: trade-app
networks:
- trade-net
- crm_backend
networks:
trade-net:
driver: bridge
ipam:
config:
- subnet: 192.168.70.0/24
gateway: 192.168.70.1
crm_backend:
name: crm_backend
Cat check_logs_svc.sh:
#!/bin/bash
#in CI/CD pipelnes needed declarate variables
#export PROJECT=gaming
#export PROJECT_PATH=report
echo $PROJECT
echo $PROJECT_PATH
echo $TYPECODE
##########################################
svc=$(docker service ls --format "{{.Name}}" | grep $PROJECT_PATH | grep $PROJECT) && echo $svc
echo "============================================================================================"
sleep 3s
#timeout 10 docker service logs --raw --since 2m -f --no-trunc $svc
logresult=$(timeout -v 5 docker service logs --raw --since 2m -f --no-trunc $svc 2>&1)
timeout -v 5 docker service logs --raw --since 2m -f --no-trunc $svc 2>&1
echo $logresult
echo "======================================================================================"
if [[ $(echo $logresult | grep 'error') ]]; then
status="HAS error!!!!!"
echo "====================$svc deploy $status"
else
status="NO error"
echo "====================$svc deploy $status"; fi
echo "================================= end validation ==================================="
if [[ $BRANCH_PATH == "master" ]]; then echo "--------master";
elif [[ $BRANCH_PATH == "develop" ]]; then echo "--------develop";
elif [[ $BRANCH_PATH == "stage" ]]; then echo "--------stage";
else echo "other"; fi
echo "======================================================================================="
echo "TEXT FOR TELEGRAM CURL Deploy NODE.js $PROJECT $PROJECT_PATH from $BRANCH_PATH! job $CI_JOB_STAGE By $GITLAB_USER_NAME n=$CI_PIPELINE_ID $VERSION $status "
curl -s -X POST https://api.telegram.org/bot571ххххххх:ххххххххххххххххххххххххх-o8/sendMessage -d chat_id=-ххххххххх -d text="Deploy $TYPECODE $PROJECT $PROJECT_PATH from $BRANCH_PATH! job $CI_JOB_STAGE By $GITLAB_USER_NAME n=$CI_PIPELINE_ID $VERSION $status "