WIP: Add SendMessage Module #110
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration / Webservice | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- webservice/** | |
pull_request: | |
paths: | |
- webservice/** | |
types: [opened, reopened, synchronize, ready_for_review] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
COMMIT_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
BRANCH: ${{ github.event_name == 'pull_request' && format('refs/heads/{0}', github.event.pull_request.head.ref) || github.ref }} | |
BASE_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }} | |
jobs: | |
install-dependencies: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.3 | |
tools: composer:v2 | |
coverage: xdebug | |
- name: Validate composer.json and composer.lock | |
working-directory: webservice | |
run: composer validate --no-check-publish --strict | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: webservice/vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install Dependencies | |
working-directory: webservice | |
run: composer install --no-progress --no-interaction --prefer-dist --optimize-autoloader --no-scripts | |
lint: | |
runs-on: ubuntu-latest | |
needs: | |
- install-dependencies | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: $(( ${{ github.event_name == 'pull_request' && github.event.pull_request.commits || 0 }} + 1 )) | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.3 | |
tools: composer:v2 | |
- name: Restore cached composer packages | |
id: composer-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: webservice/vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install Dependencies | |
working-directory: webservice | |
run: >- | |
composer install --no-progress --no-interaction --prefer-dist --optimize-autoloader | |
- name: Lint Twig Templates | |
working-directory: webservice | |
run: 'composer run code:lint:twig' | |
- name: Lint Symfony Container | |
working-directory: webservice | |
run: 'composer run code:lint:container' | |
- name: Check Code Style (PHP) | |
working-directory: webservice | |
run: | | |
IFS=' | |
' | |
CHANGED_FILES=$(git diff --name-only --relative --diff-filter=ACMRTUXB "${BASE_SHA}..${COMMIT_SHA}") | |
if ! echo "${CHANGED_FILES}" | grep -qE "^(\\.php-cs-fixer(\\.dist)?\\.php|composer\\.lock)$"; then EXTRA_ARGS=$(printf -- '--path-mode=intersection\n--\n%s' "${CHANGED_FILES}"); else EXTRA_ARGS=''; fi | |
vendor/bin/php-cs-fixer check --config=.php-cs-fixer.dist.php -v --stop-on-violation --using-cache=no ${EXTRA_ARGS} | |
test: | |
runs-on: ubuntu-latest | |
needs: | |
- install-dependencies | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build Docker images | |
uses: docker/bake-action@v4 | |
with: | |
pull: true | |
load: true | |
files: | | |
compose.yaml | |
compose.override.yaml | |
set: | | |
*.cache-from=type=gha,scope=${{github.ref}} | |
*.cache-from=type=gha,scope=refs/heads/main | |
*.cache-to=type=gha,scope=${{github.ref}},mode=max | |
- name: Start services | |
run: docker compose up --wait --no-build | |
- name: Check HTTPS reachability | |
if: false # Remove this line when the homepage will be configured, or change the path to check | |
run: curl -vk --fail-with-body https://localhost | |
- name: Check Mercure reachability | |
run: curl -vkI --fail-with-body https://localhost/.well-known/mercure?topic=test | |
- name: Create test database | |
run: docker compose exec -T php bin/console -e test doctrine:database:create | |
- name: Run migrations | |
# Switch following line once Doctrine Migrations is used | |
# run: docker compose exec -T php bin/console -e test doctrine:migrations:migrate --no-interaction | |
run: docker compose exec -T php bin/console -e test doctrine:schema:create --no-interaction | |
#- name: Doctrine Schema Validator | |
# Some columns always create a diff | |
# run: docker compose exec -T php bin/console -e test doctrine:schema:validate | |
- name: Run PHPUnit | |
run: docker compose exec -T php composer run test:coverage | |
static-analyser-check: | |
runs-on: ubuntu-latest | |
needs: | |
- install-dependencies | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.3 | |
tools: composer:v2 | |
- name: Restore cached composer packages | |
id: composer-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: webservice/vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
restore-keys: | | |
${{ runner.os }}-php- | |
- name: Install Dependencies | |
working-directory: webservice | |
run: >- | |
composer install --no-progress --no-interaction --prefer-dist --optimize-autoloader | |
- name: Run Static Analyser (PHPStan) | |
working-directory: webservice | |
run: 'composer run code:sa:check:ci' |