diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ab8dd4..bc30f6e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,66 +1,58 @@ -image: edbizarro/gitlab-ci-pipeline-php:7.4 +image: lorisleiva/laravel-docker:latest -stages: - - preparation - - building - - syntax - - testing - - deploy - -cache: - key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - -# 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 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 - -yarn: - stage: preparation - script: - - yarn install --pure-lockfile - artifacts: - paths: - - node_modules/ - expire_in: 1 days - when: always +# 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 + +.change_file_permissions: &change_file_permissions | + find . -type f -not -path "./vendor/*" -exec chmod 664 {} \; + find . -type d -not -path "./vendor/*" -exec chmod 775 {} \; + +composer: + stage: build cache: + key: ${CI_COMMIT_REF_SLUG}-composer + paths: + - vendor/ + 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: + - phpunit --coverage-text --colors=never +