Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- image: anasdox/phpwebbuilder:latest
- stages:
- - quality-gates
- - package-app
- - package-docker
- - deploy
- variables:
- CI_DEBUG_TRACE: "false"
- PHP_DOCKER_IMAGE_NAME: "${CI_PROJECT_PATH_SLUG}-php"
- PHP_DOCKER_FROM_IMAGE: "${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/wodby/drupal-php:7.1-3.0.0"
- APACHE_DOCKER_IMAGE_NAME: "${CI_PROJECT_PATH_SLUG}-apache"
- APACHE_DOCKER_FROM_IMAGE: "${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/wodby/php-apache:2.4-2.0.0"
- code-sniffer:
- image: skilldlabs/docker-phpcs-drupal:latest
- stage: quality-gates
- script:
- - ./automation/bin/code_sniffer.sh
- tags:
- - build
- package-app-artifact:
- stage: package-app
- script:
- - ./automation/bin/build.sh
- - 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
- - |
- tar \
- --exclude-vcs \
- --exclude='docker*.yml' \
- --exclude='setup-dev*' \
- --exclude='settings.local.php' \
- -zcf /tmp/${CI_COMMIT_REF_SLUG}.tar.gz *
- - |
- curl \
- -u${ARTIFACTORY_USER}:${ARTIFACTORY_PASSWORD} \
- -H "X-Checksum-md5:`md5sum /tmp/${CI_COMMIT_REF_SLUG}.tar.gz | cut -d' ' -f1`" \
- -T /tmp/${CI_COMMIT_REF_SLUG}.tar.gz \
- --fail \
- ${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz
- tags:
- - build
- only:
- - master
- - develop
- - /^release.*/
- package-docker-php-artifact:
- stage: package-docker
- image: docker:latest
- script:
- - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
- - |
- docker build -t ${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} \
- --build-arg FROM_IMAGE=${PHP_DOCKER_FROM_IMAGE} \
- --build-arg ARTIFACTORY_USER=${ARTIFACTORY_USER} \
- --build-arg ARTIFACTORY_PASSWORD=${ARTIFACTORY_PASSWORD} \
- --build-arg ARTIFACT_URI=${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz \
- --build-arg COMMIT_SHA=${CI_COMMIT_SHA} \
- --no-cache \
- --quiet \
- ./automation/docker
- - docker tag ${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
- - docker push ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${PHP_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
- tags:
- - build
- only:
- - master
- - develop
- - /^release.*/
- package-docker-apache-artifact:
- stage: package-docker
- image: docker:latest
- script:
- - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
- - |
- docker build -t ${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} \
- --build-arg FROM_IMAGE=${APACHE_DOCKER_FROM_IMAGE} \
- --build-arg ARTIFACTORY_USER=${ARTIFACTORY_USER} \
- --build-arg ARTIFACTORY_PASSWORD=${ARTIFACTORY_PASSWORD} \
- --build-arg ARTIFACT_URI=${ARTIFACTORY_GENERIC_LOCAL_REPO_URL}/${CI_COMMIT_REF_SLUG}.tar.gz \
- --build-arg COMMIT_SHA=${CI_COMMIT_SHA} \
- --no-cache \
- --quiet \
- ./automation/docker
- - docker tag ${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
- - docker push ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}/${APACHE_DOCKER_IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
- tags:
- - build
- only:
- - master
- - develop
- - /^release.*/
- # https://docs.gitlab.com/ce/ci/yaml/README.html#special-yaml-features
- .job-deploy-script-template : &job-deploy-script-definition
- script:
- - "echo \"Deploy to : ${APP_DOMAIN}\""
- - docker login -u ${ARTIFACTORY_USER} -p ${ARTIFACTORY_PASSWORD} ${ARTIFACTORY_DOCKER_VIRTUAL_REGISTERY_URI}
- - docker-compose -f docker-compose.yml -f docker-compose-deploy.yml pull php apache
- - docker-compose -f docker-compose.yml -f docker-compose-deploy.yml up -d
- - docker-compose exec -T php bash -c './automation/bin/wait-for.sh ${DB_HOST}:3306 --timeout=60 -- echo "mariadb is ready"'
- - docker-compose exec -T php ./automation/bin/install.sh
- - docker-compose exec -T php ./automation/bin/reset_password.sh
- deploy-integ:
- <<: *job-deploy-script-definition
- stage: deploy
- variables:
- APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.integ.${BASE_DOMAIN}
- COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_integ
- environment:
- name: integ
- url: http://${CI_PROJECT_PATH_SLUG}.integ.${BASE_DOMAIN}
- only:
- - master
- - develop
- tags:
- - integ
- deploy-dev:
- <<: *job-deploy-script-definition
- stage: deploy
- variables:
- APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.dev.${BASE_DOMAIN}
- COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_dev
- when: manual
- environment:
- name: dev
- url: http://${CI_PROJECT_PATH_SLUG}.dev.${BASE_DOMAIN}
- only:
- - master
- - develop
- tags:
- - dev
- deploy-rec:
- <<: *job-deploy-script-definition
- stage: deploy
- variables:
- APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.rec.${BASE_DOMAIN}
- COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_rec
- environment:
- name: rec
- url: http://${CI_PROJECT_PATH_SLUG}.rec.${BASE_DOMAIN}
- when: manual
- only:
- - /^release.*/
- tags:
- - rec
- deploy-demo:
- <<: *job-deploy-script-definition
- stage: deploy
- variables:
- APP_DOMAIN: ${CI_PROJECT_PATH_SLUG}.demo.${BASE_DOMAIN}
- COMPOSE_PROJECT_NAME: ${CI_PROJECT_PATH_SLUG}_demo
- environment:
- name: demo
- url: http://${CI_PROJECT_PATH_SLUG}.demo.${BASE_DOMAIN}
- when: manual
- only:
- - /^release.*/
- tags:
- - demo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement