diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c321a8c..5d2c802 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,70 +1,72 @@ -image: lorisleiva/laravel-docker:latest +# Official framework image. Look for the different tagged releases at: +# https://hub.docker.com/r/library/php +image: php:latest -# https://github.com/lorisleiva/laravel-docker/blob/master/gitlab/.gitlab-ci.deployments.yml +# 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/ee/ci/docker/using_docker_images.html#what-is-a-service +services: + - mysql:latest -.init_ssh: &init_ssh | - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config +variables: + MYSQL_DATABASE: project_name + MYSQL_ROOT_PASSWORD: secret - # Replace the last line with the following lines if you'd rather - # leave StrictHostKeyChecking enabled (replace yourdomain.com): - # - # ssh-keyscan yourdomain.com >> ~/.ssh/known_hosts - # chmod 644 ~/.ssh/known_hosts +# This folder is cached between builds +# http://docs.gitlab.com/ee/ci/yaml/README.html#cache +cache: + paths: + - vendor/ + - node_modules/ -.change_file_permissions: &change_file_permissions | - find . -type f -not -path "./vendor/*" -exec chmod 664 {} \; - find . -type d -not -path "./vendor/*" -exec chmod 775 {} \; +# 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 + # Prep for Node + - apt-get install gnupg -yqq + # Upgrade to Node 8 + - curl -sL https://deb.nodesource.com/setup_8.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 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 -composer: - stage: build - cache: - key: ${CI_COMMIT_REF_SLUG}-composer - paths: - - vendor/ +test: script: - - composer install --prefer-dist --no-ansi --no-interaction --no-progress --no-scripts - - cp .env.example .env - - php artisan key:generate - artifacts: - expire_in: 1 month - paths: - - vendor/ - - .env - -npm: - stage: build - cache: - key: ${CI_COMMIT_REF_SLUG}-npm - paths: - - node_modules/ - script: - - npm install - - npm run production - artifacts: - expire_in: 1 month - paths: - - node_modules/ - - public/css/ - - public/js/ - -codestyle: - stage: test - dependencies: [] - script: - - phpcs --standard=PSR2 --extensions=php --ignore=app/Support/helpers.php app - -phpunit: - stage: test - dependencies: - - composer - script: - - mkdir storage/public - - mkdir storage/public/images - - mkdir storage/public/thumbnail - - chown -R $USER:www-data storage/ - - chmod -R g+w storage/ - - phpunit --coverage-text --colors=never + # 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