Skip to content

docker compose optimization #166

docker compose optimization

docker compose optimization #166

Workflow file for this run

on: pull_request
name: PR Review
jobs:
changelog:
runs-on: ubuntu-latest
name: Changelog should be updated
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Git fetch
run: git fetch
- name: Check that changelog has been updated.
run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
test-composer-files:
name: Validate composer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
extensions: ctype, dom, iconv, json, zip, gd, soap
coverage: none
tools: composer:v2
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Validate composer files
run: |
composer validate composer.json
coding-standards:
name: PHP - Check Coding Standards
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
extensions: ctype, dom, iconv, json, zip, gd, soap
coverage: none
tools: composer:v2
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: |
composer install --no-interaction --no-progress --no-scripts
# @see https://github.com/Dealerdirect/phpcodesniffer-composer-installer#calling-the-plugin-directly
composer run-script install-codestandards
- name: PHPCS
run: |
composer coding-standards-check
coding-standards-markdown:
name: Yarn - Check Coding Standards (Node ${{ matrix.node }})
runs-on: ubuntu-latest
strategy:
matrix:
node: [ '16' ]
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- run: |
yarn install
yarn coding-standards-check
code-analysis:
name: PHP - Code analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
extensions: ctype, dom, iconv, json, zip, gd, soap
coverage: none
tools: composer:v2
# https://github.com/shivammathur/setup-php#cache-composer-dependencies
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: |
# Using `--no-scripts` breaks something with mglaman/drupal-check.
composer install --no-interaction --no-progress --no-scripts
- name: code-analysis
run: |
composer code-analysis
coding-standards-custom-themes:
name: Yarn - Check Coding Standards in custom themes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup docker network
run: docker network create frontend
- name: Install build dependencies
run: docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal install
- name: Check coding standards
run: docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal check-coding-standards
check-custom-theme-assets:
name: Check custom theme assets are up to date
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup docker network
run: docker network create frontend
- name: Install build dependencies
run: docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal install
- name: Build theme assets
run: docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal build
- name: Check for changes in built css
run: git diff --diff-filter=ACMRT --exit-code web/themes/custom/hoeringsportal/build
install-site:
name: Check that site can be installed
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install site
run: |
docker network create frontend
docker compose pull
docker compose up --detach
# Important: Use --no-interaction to make https://getcomposer.org/doc/06-config.md#discard-changes have effect.
docker compose exec --user root phpfpm composer install --no-interaction
# Install the site
docker compose exec --user root phpfpm vendor/bin/drush site:install minimal --existing-config --yes
# Build theme assets
docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal install
docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal build
- name: Open site
run: |
# Open the site
echo $(docker compose exec phpfpm vendor/bin/drush --uri=http://$(docker compose port nginx 8080) user:login)
playwright-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install site
run: |
docker network create frontend
docker compose pull
docker compose docker compose --profile test up --detach
# Important: Use --no-interaction to make https://getcomposer.org/doc/06-config.md#discard-changes have effect.
docker compose exec --user root phpfpm composer install --no-interaction
# Install the site
docker compose exec --user root phpfpm vendor/bin/drush site:install minimal --existing-config --yes
# Build theme assets
docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal install
docker compose run --rm node yarn --cwd /app/web/themes/custom/hoeringsportal build
cat > web/sites/default/settings.local.php <<'EOL'
<?php
$settings['hoeringsportal_openid_connect']['openid_connect'] = [
'clientId' => 'client-id',
'clientSecret' => 'client-secret',
'openIDConnectMetadataUrl' => 'http://idp-citizen.hoeringsportal.local.itkdev.dk/.well-known/openid-configuration',
];
EOL
- name: Run Playwright
run: |
docker compose run --rm node yarn install
docker compose run --rm playwright npx playwright test --retries 3
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30