Advertisement
Guest User

Untitled

a guest
Oct 26th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. stages:
  2. - build
  3. - feature
  4. - deploy
  5. - review
  6.  
  7. variables:
  8. ENV_URL_DEVELOP: http://secret.ru/backend
  9. ENV_URL_STAGING: http://secret.ru/backend
  10. ENV_URL_MASTER: http://secret.ru/backend
  11. ENV_URL_FEATURE: http://secret.ru/feature/backend
  12. IMAGE: ${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_NAME}:${CI_PIPELINE_ID}
  13. DOCKERFILE: Dockerfile
  14. STACK_FILE: docker-stack.yml
  15. EXTERNAL_PORT: 8081
  16. INTERNAL_PORT: 8080
  17. SERVICE_NAME: utilities-backend_${CI_COMMIT_REF_NAME}
  18. DOCKER_HOST_DEVELOP: "secret01.ru secret02.ru secret03.ru"
  19. DOCKER_HOST_STAGING: "secret11.ru secret12.ru secret13.ru"
  20. DOCKER_HOST_MASTER: "secret21.ru secret22.ru secret23.ru"
  21. DOCKER_HOST_FEATURE: "secret-feature.ru"
  22.  
  23. before_script:
  24. - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
  25. #----------BUILD-----------
  26. build:
  27. stage: build
  28. script:
  29. - docker build --no-cache --build-arg NAME_PROJECT=${CI_PROJECT_NAME} --pull --target app -t ${IMAGE} -f ${DOCKERFILE} .
  30. - docker push ${IMAGE}
  31. - docker image prune -f --filter "dangling=true" && docker container prune -f
  32. tags:
  33. - build
  34.  
  35. #-----------SCRIPT DEPLOY---------
  36. .deploy-script: &deploy-script
  37. script:
  38. - if [ ${CI_COMMIT_REF_NAME} == "develop" ];
  39. then export ENV_URL=${ENV_URL_DEVELOP} DOCKER_HOST_TEMP=${DOCKER_HOST_DEVELOP};
  40. elif [ ${CI_COMMIT_REF_NAME} == "staging" ]; then export ENV_URL=${ENV_URL_STAGING} DOCKER_HOST_TEMP=${DOCKER_HOST_STAGING};
  41. elif [ ${CI_COMMIT_REF_NAME} == "master" ]; then export ENV_URL=${ENV_URL_MASTER} DOCKER_HOST_TEMP=${DOCKER_HOST_MASTER};
  42. else export EXTERNAL_PORT=$(( RANDOM % 1000 + 31000 )) ENV_URL=${ENV_URL_FEATURE} DOCKER_HOST_TEMP=${DOCKER_HOST_FEATURE} && echo -e "\n########################\n#\n# STAND URL $ENV_URL:$EXTERNAL_PORT\n#\n########################";
  43. fi;
  44. - mkdir -p ~/.docker && echo ${TLSCACERT} | base64 -d > ~/.docker/ca.pem && echo ${TLSCERT} | base64 -d > ~/.docker/cert.pem && echo ${TLSKEY} | base64 -d > ~/.docker/key.pem && export DOCKER_TLS_VERIFY=1
  45. - for host in ${DOCKER_HOST_TEMP};
  46. do export DOCKER_HOST=tcp://${host}:2376 &&
  47. if [ "$(docker ps -q -f name=${SERVICE_NAME})" ];
  48. then docker stop ${SERVICE_NAME} && docker rm ${SERVICE_NAME};
  49. elif [ "$(docker ps -aq -f name=${SERVICE_NAME})" ];
  50. then docker rm ${SERVICE_NAME};
  51. fi;
  52. docker run -ti -d --restart always -p ${EXTERNAL_PORT}:${INTERNAL_PORT} -e TZ=Europe/Moscow -e PGHOST=${PGHOST} -e PGPORT=${PGPORT} -e PGDATABASE=${PGDATABASE} -e PGUSERNAME=${PGUSERNAME} -e PGPASSWORD=${PGPASSWORD} -e NETPORT=${INTERNAL_PORT} --name ${SERVICE_NAME} ${IMAGE}; done;
  53. - sleep 15;
  54. - for host in ${DOCKER_HOST_TEMP};
  55. do export DOCKER_HOST=tcp://${host}:2376 &&
  56. if [[ $(docker inspect ${SERVICE_NAME} --format '{{ .State.Status}}') != "running" ]];
  57. then echo "CT is not Running!" && docker logs ${TEST_CT} && docker rm -f ${SERVICE_NAME} && exit 1; else echo "CT Running!";
  58. fi;
  59. done;
  60. - rm -rf ~/.docker && unset DOCKER_TLS_VERIFY DOCKER_HOST
  61. tags:
  62. - build
  63.  
  64. .review-script: &review-script
  65. script:
  66. - mkdir -p ~/.docker && echo ${TLSCACERT} | base64 -d > ~/.docker/ca.pem && echo ${TLSCERT} | base64 -d > ~/.docker/cert.pem && echo ${TLSKEY} | base64 -d > ~/.docker/key.pem && DOCKER_TLS_VERIFY=1 DOCKER_HOST=${DOCKER_HOST_FEATURE} docker rm -f ${SERVICE_NAME}
  67. - rm -rf ~/.docker && unset DOCKER_TLS_VERIFY DOCKER_HOST
  68.  
  69. #------------DEPLOY--------------
  70. deploy feature:
  71. stage: feature
  72. script:
  73. <<: *deploy-script
  74. environment:
  75. name: feature/${CI_COMMIT_REF_NAME}
  76. except:
  77. - develop
  78. - staging
  79. - master
  80.  
  81. deploy develop:
  82. stage: deploy
  83. <<: *deploy-script
  84. environment:
  85. name: ${CI_COMMIT_REF_NAME}
  86. url: ${ENV_URL_DEVELOP}
  87. only:
  88. - develop
  89.  
  90. deploy staging:
  91. stage: deploy
  92. <<: *deploy-script
  93. environment:
  94. name: ${CI_COMMIT_REF_NAME}
  95. url: ${ENV_URL_STAGING}
  96. only:
  97. - staging
  98. when: manual
  99.  
  100. deploy production:
  101. stage: deploy
  102. <<: *deploy-script
  103. environment:
  104. name: ${CI_COMMIT_REF_NAME}
  105. url: ${ENV_URL_MASTER}
  106. only:
  107. - master
  108. when: manual
  109.  
  110. #-------STOP FEATURE ENV-------
  111. stop_review:
  112. stage: review
  113. <<: *review-script
  114. when: manual
  115. except:
  116. - develop
  117. - staging
  118. - master
  119. environment:
  120. name: feature/${CI_BUILD_REF_NAME}
  121. action: stop
  122. tags:
  123. - build
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement