Skip to content

Instantly share code, notes, and snippets.

@kariae
Created June 6, 2017 17:29
Show Gist options
  • Star 20 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save kariae/09ab219d80c38206775d831df2684bbf to your computer and use it in GitHub Desktop.
Save kariae/09ab219d80c38206775d831df2684bbf to your computer and use it in GitHub Desktop.
GitLab CI/CD configuration for Symfony
variables:
REGISTRY_URL: registry.lekode.com:5000
IMAGE_NAME: app
BUILD_CODE_IMAGE: $REGISTRY_URL/$IMAGE_NAME:$CI_COMMIT_REF_NAME
LATEST_CODE_IMAGE: $REGISTRY_URL/$IMAGE_NAME:latest
stages:
- test
- install
- build
- deploy
test:
stage: test
image: kariae/symfony-php
tags:
- test
services:
- postgres
variables:
POSTGRES_USER: lekode-test
POSTGRES_PASSWORD: lekode-test-pass
POSTGRES_DB: lekode-db
DATABASE_HOST: postgres
DATABASE_PORT: "5432"
artifacts:
expire_in: 1 day
paths:
- vendor/
- app/config/parameters.yml
- var/bootstrap.php.cache
before_script:
- composer config cache-files-dir /cache/composer
cache:
paths:
- /cache/composer
- ./vendor
script:
- composer install --optimize-autoloader
- vendor/bin/simple-phpunit
prepare-production:
stage: install
image: kariae/symfony-php
dependencies: []
tags:
- test
only:
- tags
services:
- postgres
variables:
POSTGRES_USER: lekode-test
POSTGRES_PASSWORD: lekode-test-pass
POSTGRES_DB: lekode-db
DATABASE_HOST: postgres
DATABASE_PORT: "5432"
artifacts:
expire_in: 1 day
paths:
- vendor/
- app/config/parameters.yml
- var/bootstrap.php.cache
before_script:
- composer config cache-files-dir /cache/composer
cache:
paths:
- /cache/composer
- ./vendor
script:
- export SYMFONY_ENV=prod
- composer install --no-dev --optimize-autoloader
- php bin/console cache:clear --env=prod --no-debug
- php bin/console cache:warmup --env=prod --no-debug
build-staging:
stage: build
dependencies:
- test
only:
- master
image: docker:latest
tags:
- build
services:
- docker:dind
script:
- echo $LATEST_CODE_IMAGE
- ls -la
- docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD $REGISTRY_URL
- docker build --tag="$LATEST_CODE_IMAGE" .
- docker push $LATEST_CODE_IMAGE
build-production:
stage: build
dependencies:
- prepare-production
image: docker:latest
only:
- tags
tags:
- build
services:
- docker:dind
script:
- echo $BUILD_CODE_IMAGE
- ls -la
- docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD $REGISTRY_URL
- docker build --tag="$BUILD_CODE_IMAGE" .
- docker push $BUILD_CODE_IMAGE
deploy-staging:
stage: deploy
dependencies: []
tags:
- deploy
image: cdrx/rancher-gitlab-deploy
services:
- docker:dind
only:
- master
script:
- upgrade --stack Application --service php-fpm --finish-upgrade --sidekicks --new-sidekick-image php-fpm-app $LATEST_CODE_IMAGE
- upgrade --stack Application --service nginx --finish-upgrade --sidekicks --new-sidekick-image nginx-app $LATEST_CODE_IMAGE
deploy-production:
stage: deploy
dependencies: []
tags:
- deploy
image: cdrx/rancher-gitlab-deploy
services:
- docker:dind
only:
- tags
script:
- upgrade --stack Application --service php-fpm --finish-upgrade --sidekicks --new-sidekick-image php-fpm-app $LATEST_CODE_IMAGE
- upgrade --stack Application --service nginx --finish-upgrade --sidekicks --new-sidekick-image nginx-app $LATEST_CODE_IMAGE
@cstern-eenov
Copy link

Hi, your article seems to be very interesting but i can't find it?

@kariae
Copy link
Author

kariae commented Dec 3, 2019

Hey @cstern-eenov the article can be found in Medium please feel free to share your thoughts ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment