Skip to content

Instantly share code, notes, and snippets.

@Mozartted
Last active October 20, 2017 18:49
Show Gist options
  • Save Mozartted/e06a8b83c8beee0bb294236a8f0cb001 to your computer and use it in GitHub Desktop.
Save Mozartted/e06a8b83c8beee0bb294236a8f0cb001 to your computer and use it in GitHub Desktop.

Revisions

  1. Mozartted revised this gist Oct 20, 2017. 1 changed file with 0 additions and 84 deletions.
    84 changes: 0 additions & 84 deletions .gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -1,91 +1,7 @@
    # This file is a template, and might need editing before it works on your project.
    # Official framework image. Look for the different tagged releases at:
    # https://hub.docker.com/r/library/php
    # image: php:latest

    stages:
    - test
    - deploy

    # Pick zero or more services to be used on all builds.
    # Only needed when using a docker container to run your tests in.
    # Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
    services:
    - mysql:latest

    variables:
    MYSQL_DATABASE: project_name
    MYSQL_ROOT_PASSWORD: secret

    # This folder is cached between builds
    # http://docs.gitlab.com/ce/ci/yaml/README.html#cache
    cache:
    paths:
    - vendor/
    - node_modules/

    # # This is a basic example for a gem or script which doesn't use
    # # services such as redis or postgres
    before_script:
    # Update packages
    - apt-get update -yqq

    # Upgrade to Node 7
    - curl -sL https://deb.nodesource.com/setup_7.x | bash -

    # Install dependencies
    - apt-get install git nodejs libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq

    # Install php extensions
    - docker-php-ext-install mbstring mcrypt pdo_mysql curl json intl gd xml zip bz2 opcache

    # Install & enable Xdebug for code coverage reports
    - pecl install xdebug
    - docker-php-ext-enable xdebug

    # Install Composer and project dependencies.
    - curl -sS https://getcomposer.org/installer | php
    - php composer.phar install

    # # Install Node dependencies.
    # # comment this out if you don't have a node dependency
    # # - npm install

    # # Copy over testing configuration.
    # # Don't forget to set the database config in .env.testing correctly
    # # DB_HOST=mysql
    # # DB_DATABASE=project_name
    # # DB_USERNAME=root
    # # DB_PASSWORD=secret
    - cp .env.testing .env

    # Run npm build
    # comment this out if you don't have a frontend build
    # you can change this to to your frontend building script like
    # npm run build
    - npm run dev

    # Generate an application key. Re-cache.
    - php artisan key:generate
    - php artisan config:cache

    # Run database migrations.
    - php artisan migrate

    # # Run database seed
    - php artisan db:seed

    test:
    stage: test
    script:
    # run laravel tests
    - php vendor/bin/phpunit --coverage-text --colors=never

    # # run frontend tests
    # # if you have any task for testing frontend
    # # set it in your package.json script
    # # comment this out if you don't have a frontend test
    # # - npm test

    # So this is where I deploy to server to build the site
    deploy-master:
  2. Mozartted created this gist Oct 20, 2017.
    128 changes: 128 additions & 0 deletions .gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,128 @@
    # This file is a template, and might need editing before it works on your project.
    # Official framework image. Look for the different tagged releases at:
    # https://hub.docker.com/r/library/php
    # image: php:latest

    stages:
    - test
    - deploy

    # Pick zero or more services to be used on all builds.
    # Only needed when using a docker container to run your tests in.
    # Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
    services:
    - mysql:latest

    variables:
    MYSQL_DATABASE: project_name
    MYSQL_ROOT_PASSWORD: secret

    # This folder is cached between builds
    # http://docs.gitlab.com/ce/ci/yaml/README.html#cache
    cache:
    paths:
    - vendor/
    - node_modules/

    # # This is a basic example for a gem or script which doesn't use
    # # services such as redis or postgres
    before_script:
    # Update packages
    - apt-get update -yqq

    # Upgrade to Node 7
    - curl -sL https://deb.nodesource.com/setup_7.x | bash -

    # Install dependencies
    - apt-get install git nodejs libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq

    # Install php extensions
    - docker-php-ext-install mbstring mcrypt pdo_mysql curl json intl gd xml zip bz2 opcache

    # Install & enable Xdebug for code coverage reports
    - pecl install xdebug
    - docker-php-ext-enable xdebug

    # Install Composer and project dependencies.
    - curl -sS https://getcomposer.org/installer | php
    - php composer.phar install

    # # Install Node dependencies.
    # # comment this out if you don't have a node dependency
    # # - npm install

    # # Copy over testing configuration.
    # # Don't forget to set the database config in .env.testing correctly
    # # DB_HOST=mysql
    # # DB_DATABASE=project_name
    # # DB_USERNAME=root
    # # DB_PASSWORD=secret
    - cp .env.testing .env

    # Run npm build
    # comment this out if you don't have a frontend build
    # you can change this to to your frontend building script like
    # npm run build
    - npm run dev

    # Generate an application key. Re-cache.
    - php artisan key:generate
    - php artisan config:cache

    # Run database migrations.
    - php artisan migrate

    # # Run database seed
    - php artisan db:seed

    test:
    stage: test
    script:
    # run laravel tests
    - php vendor/bin/phpunit --coverage-text --colors=never

    # # run frontend tests
    # # if you have any task for testing frontend
    # # set it in your package.json script
    # # comment this out if you don't have a frontend test
    # # - npm test

    # So this is where I deploy to server to build the site
    deploy-master:
    stage: deploy
    image: tetraweb/php:7.0

    before_script:
    - mkdir -p ~/.ssh
    - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    script:
    - ssh deployer@YOUR_SERVERIP_HERE "cd /var/www/project/ && git checkout . && git checkout master && git pull && cp .env.example .env && composer install && php artisan migrate "
    environment:
    name: production
    only:
    refs:
    - master
    tags:
    - live
    - production

    deploy-dev:
    stage: deploy
    image: tetraweb/php:7.0

    before_script:
    - mkdir -p ~/.ssh
    - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    script:
    - ssh deployer@YOUR_SERVERIP_HERE "cd /var/www/project/ && git fetch && git checkout dev && git pull && cp .env.example_dev .env && composer install && php artisan migrate "
    environment:
    name: development
    only:
    refs:
    - dev
    tags:
    - live