diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4631f2..34d272e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,14 @@ stages: - - test - - build +- test +- build # This folder is cached between builds # http://docs.gitlab.com/ce/ci/yaml/README.html#cache cache: - key: ${CI_COMMIT_REF_SLUG} + key: ${CI_JOB_NAME_SLUG}-${CI_COMMIT_REF_SLUG} paths: - - vendor/ + - vendor/ include: - - .gitlab-test.yml - - .gitlab-docker-x86_64.yml +- .gitlab-test.yml +- .gitlab-docker-x86_64.yml diff --git a/.gitlab-docker-x86_64.yml b/.gitlab-docker-x86_64.yml index bc6634d..c33b8db 100644 --- a/.gitlab-docker-x86_64.yml +++ b/.gitlab-docker-x86_64.yml @@ -1,33 +1,27 @@ docker: - image: docker:latest + variables: + VERSION: latest + DOCKER_HOST: tcp://docker:2375 stage: build + image: docker:latest services: - - docker:dind - - variables: - VERSION: latest - CACHETAG: build-${VERSION} - DOCKER_HOST: tcp://docker:2375 - - tags: - - docker - - x86_64 - only: - - master + - docker:dind before_script: - - docker info - - docker version - - echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin - - if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > auth.json; fi + - docker info && docker version + - echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin + - if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > auth.json; fi script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" ] && docker pull ${CI_REGISTRY_IMAGE}:${CACHETAG}) || echo "true" - - echo -n ${CI_COMMIT_SHORT_SHA} > VERSION - - rm -rf vendor/ database/schema database/seeders database/factories/* - - docker build --cache-from ${CI_REGISTRY_IMAGE}:${CACHETAG} -t ${CI_REGISTRY_IMAGE}:${VERSION} -t ${CI_REGISTRY_IMAGE}:${CACHETAG} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSION} - - docker push ${CI_REGISTRY_IMAGE}:${CACHETAG} + - if [ -f init ]; then chmod 500 init; fi + - echo -n ${CI_COMMIT_SHORT_SHA} > VERSION + - rm -rf vendor/ database/schema database/seeders database/factories/* + - docker build -t ${CI_REGISTRY_IMAGE}:${VERSION} . + - docker push ${CI_REGISTRY_IMAGE}:${VERSION} + tags: + - docker + - x86_64 + only: + - master diff --git a/.gitlab-test.yml b/.gitlab-test.yml index 8c13b34..01c6727 100644 --- a/.gitlab-test.yml +++ b/.gitlab-test.yml @@ -1,12 +1,12 @@ test: - image: ${CI_REGISTRY}/leenooks/php:8.0-fpm-latest-test + image: ${CI_REGISTRY}/leenooks/php:8.1-fpm-alpine-mysql-test stage: test # NOTE: This service is dependant on project file configuration, which is not there if the cache was deleted # resulting in the testing to fail on the first run. services: - - mariadb:10.5 + - mariadb:10.5 variables: MYSQL_DATABASE: testing @@ -15,34 +15,34 @@ test: MYSQL_PASSWORD: test tags: - - php + - php only: - - master - - test + - master + - test before_script: - - mv .env.testing .env + - mv .env.testing .env - # Install Composer and project dependencies. - - mkdir -p /root/.config/composer - - if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > /root/.config/composer/auth.json ; fi - - composer install + # Install Composer and project dependencies. + - mkdir -p ${COMPOSER_HOME} + - if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > ${COMPOSER_HOME}/auth.json; fi + - composer install - # Add mysql client for schema pre-load - - apt update -o Acquire::ForceIPv4=true && apt install -o Acquire::ForceIPv4=true -y mariadb-client + # Add mysql client for schema pre-load + - apt update -o Acquire::ForceIPv4=true && apt install -o Acquire::ForceIPv4=true -y mariadb-client - # Generate an application key. Re-cache. - - php artisan key:generate --env=testing - - php artisan config:cache --env=testing - - php artisan migrate - - php artisan db:seed + # Generate an application key. Re-cache. + - php artisan key:generate --env=testing + - php artisan config:cache --env=testing + - php artisan migrate + - php artisan db:seed script: - # run laravel tests - - XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never + # run laravel tests + - XDEBUG_MODE=coverage 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 + # 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 diff --git a/Dockerfile b/Dockerfile index 89cb0b9..470e29a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,12 @@ -FROM registry.leenooks.net/leenooks/php:8.0-fpm-latest +FROM registry.dege.au/leenooks/php:8.1-fpm-alpine-mysql COPY . /var/www/html/ -RUN export COMPOSER_HOME=/var/www/.composer \ - && mkdir -p /var/www/.composer \ - && ([ -r auth.json ] && mv auth.json /var/www/.composer/) || true \ +RUN mkdir -p ${COMPOSER_HOME} \ + && ([ -r auth.json ] && mv auth.json ${COMPOSER_HOME}) || true \ && touch .composer.refresh \ && mv .env.example .env \ && FORCE_PERMS=1 NGINX_START=FALSE /sbin/init \ && chmod +x /var/www/html/artisan \ && /var/www/html/artisan storage:link \ - && rm -rf /var/www/.composer + && rm -rf ${COMPOSER_HOME}/* .git* composer.lock