Advertisement
Guest User

Untitled

a guest
Jun 7th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1. image: anasdox/phpwebbuilder:latest
  2.  
  3. stages:
  4. - quality-gates
  5. - package-app
  6. - package-docker
  7. - deploy
  8.  
  9. variables:
  10. CI_DEBUG_TRACE: "false"
  11.  
  12. PHP_DOCKER_IMAGE_NAME: "${CI_PROJECT_PATH_SLUG}-php"
  13. PHP_DOCKER_FROM_IMAGE: "${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/wodby/drupal-php:7.1-3.0.0"
  14. APACHE_DOCKER_IMAGE_NAME: "${CI_PROJECT_PATH_SLUG}-apache"
  15. APACHE_DOCKER_FROM_IMAGE: "${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/wodby/php-apache:2.4-2.0.0"
  16.  
  17. code-sniffer:
  18. image: skilldlabs/docker-phpcs-drupal:latest
  19. stage: quality-gates
  20. script:
  21. - ./automation/bin/code_sniffer.sh
  22. tags:
  23. - build
  24.  
  25. package-app-artifact:
  26. stage: package-app
  27. script:
  28. - ./automation/bin/build.sh
  29. - printf "{\"time\":\"%s\",\"hash\":\"%s\",\"tag\":\"%s\"}" `date -u +%Y-%m-%dT%H:%M:%SZ` ${CI_COMMIT_SHA} ${CI_COMMIT_REF_SLUG} > ./web/version.json
  30. - |
  31. tar \
  32. --exclude-vcs \
  33. --exclude='docker*.yml' \
  34. --exclude='setup-dev*' \
  35. --exclude='settings.local.php' \
  36. -zcf /tmp/${CI_COMMIT_REF_SLUG}.tar.gz *
  37.  
  38. - |
  39. curl \
  40. -u${ARTIFACTORY_USER}:${ARTIFACTORY_PASSWORD} \
  41. -H "X-Checksum-md5:`md5sum /tmp/${CI_COMMIT_REF_SLUG}.tar.gz | cut -d' ' -f1`" \
  42. -T /tmp/${CI_COMMIT_REF_SLUG}.tar.gz \
  43. --fail \
  44. ${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz
  45. tags:
  46. - build
  47. only:
  48. - master
  49. - develop
  50. - /^release.*/
  51.  
  52. package-docker-php-artifact:
  53. stage: package-docker
  54. image: docker:latest
  55. script:
  56. - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
  57. - |
  58. docker build -t ${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} \
  59. --build-arg FROM_IMAGE=${PHP_DOCKER_FROM_IMAGE} \
  60. --build-arg ARTIFACTORY_USER=${ARTIFACTORY_USER} \
  61. --build-arg ARTIFACTORY_PASSWORD=${ARTIFACTORY_PASSWORD} \
  62. --build-arg ARTIFACT_URI=${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz \
  63. --build-arg COMMIT_SHA=${CI_COMMIT_SHA} \
  64. --no-cache \
  65. --quiet \
  66. ./automation/docker
  67. - docker tag ${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
  68. - docker push ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
  69. tags:
  70. - build
  71. only:
  72. - master
  73. - develop
  74. - /^release.*/
  75.  
  76. package-docker-apache-artifact:
  77. stage: package-docker
  78. image: docker:latest
  79. script:
  80. - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
  81. - |
  82. docker build -t ${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} \
  83. --build-arg FROM_IMAGE=${APACHE_DOCKER_FROM_IMAGE} \
  84. --build-arg ARTIFACTORY_USER=${ARTIFACTORY_USER} \
  85. --build-arg ARTIFACTORY_PASSWORD=${ARTIFACTORY_PASSWORD} \
  86. --build-arg ARTIFACT_URI=${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz \
  87. --build-arg COMMIT_SHA=${CI_COMMIT_SHA} \
  88. --no-cache \
  89. --quiet \
  90. ./automation/docker
  91. - docker tag ${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
  92. - docker push ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
  93. tags:
  94. - build
  95. only:
  96. - master
  97. - develop
  98. - /^release.*/
  99.  
  100. # https://docs.gitlab.com/ce/ci/yaml/README.html#special-yaml-features
  101. .job-deploy-script-template : &job-deploy-script-definition
  102. script:
  103. - "echo \"Deploy to : ${APP_DOMAIN}\""
  104. - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
  105. - docker-compose -f docker-compose.yml -f docker-compose-deploy.yml pull php apache
  106. - docker-compose -f docker-compose.yml -f docker-compose-deploy.yml up -d
  107. - docker-compose exec -T php bash -c './automation/bin/wait-for.sh ${DB_HOST}:3306 --timeout=60 -- echo "mariadb is ready"'
  108. - docker-compose exec -T php ./automation/bin/install.sh
  109. - docker-compose exec -T php ./automation/bin/reset_password.sh
  110.  
  111. deploy-integ:
  112. <<: *job-deploy-script-definition
  113. stage: deploy
  114. variables:
  115. APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.integ.${BASE_DOMAIN}
  116. COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_integ
  117. environment:
  118. name: integ
  119. url: http://${CI_PROJECT_PATH_SLUG}.integ.${BASE_DOMAIN}
  120. only:
  121. - master
  122. - develop
  123. tags:
  124. - integ
  125.  
  126. deploy-dev:
  127. <<: *job-deploy-script-definition
  128. stage: deploy
  129. variables:
  130. APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.dev.${BASE_DOMAIN}
  131. COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_dev
  132. when: manual
  133. environment:
  134. name: dev
  135. url: http://${CI_PROJECT_PATH_SLUG}.dev.${BASE_DOMAIN}
  136. only:
  137. - master
  138. - develop
  139. tags:
  140. - dev
  141.  
  142. deploy-rec:
  143. <<: *job-deploy-script-definition
  144. stage: deploy
  145. variables:
  146. APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.rec.${BASE_DOMAIN}
  147. COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_rec
  148. environment:
  149. name: rec
  150. url: http://${CI_PROJECT_PATH_SLUG}.rec.${BASE_DOMAIN}
  151. when: manual
  152. only:
  153. - /^release.*/
  154. tags:
  155. - rec
  156.  
  157. deploy-demo:
  158. <<: *job-deploy-script-definition
  159. stage: deploy
  160. variables:
  161. APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.demo.${BASE_DOMAIN}
  162. COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_demo
  163. environment:
  164. name: demo
  165. url: http://${CI_PROJECT_PATH_SLUG}.demo.${BASE_DOMAIN}
  166. when: manual
  167. only:
  168. - /^release.*/
  169. tags:
  170. - demo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement