Merge branch '2724-h5p-libraries-are-not-set-up-in-a-fresh-install' o… #2637
Workflow file for this run
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: "API - Content Author" | |
on: | |
push: | |
paths: | |
- "sourcecode/apis/contentauthor/**" | |
- ".github/workflows/api-contentauthor.yaml" | |
workflow_call: | |
inputs: | |
versionToRelease: | |
description: 'A version to release' | |
required: true | |
type: string | |
secrets: | |
AWS_DOCKER_REGISTRY_ACCESS_KEY_ID: | |
required: true | |
AWS_DOCKER_REGISTRY_SECRET_ACCESS_KEY: | |
required: true | |
defaults: | |
run: | |
working-directory: sourcecode/apis/contentauthor | |
env: | |
shouldPublishImage: ${{ inputs.versionToRelease && '1' || '0' }} | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
composer-validate: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Validate | |
run: composer validate | |
php-cs-fixer: | |
if: github.ref != 'refs/heads/master' | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.head_ref }} | |
token: ${{ secrets.CERPUSBOT_SECRET }} | |
- name: Set up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.2 | |
- name: Manage php-cs-fixer cache | |
uses: actions/cache@v3 | |
with: | |
path: .php-cs-fixer.cache | |
key: ${{ runner.OS }}-${{ github.repository }}-phpcsfixer-${{ github.sha }} | |
restore-keys: ${{ runner.OS }}-${{ github.repository }}-phpcsfixer- | |
- name: Get Composer cache dir | |
id: composer-cache | |
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: composer-${{ hashFiles('**/composer.json') }} | |
- name: Install dependencies | |
run: composer install --working-dir=tools/php-cs-fixer --no-progress --prefer-dist | |
- name: Run php-cs-fixer | |
run: tools/php-cs-fixer/vendor/bin/php-cs-fixer fix --show-progress=none | |
- name: Commit fixed code | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: Run php-cs-fixer | |
phpstan: | |
if: ${{ always() }} | |
needs: [php-cs-fixer] | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.2 | |
extensions: oauth, sockets, zip | |
coverage: pcov | |
- name: Get Composer cache dir | |
id: composer-cache | |
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: composer-${{ hashFiles('**/composer.json') }} | |
- name: Install dependencies | |
run: composer install --no-progress --prefer-dist --optimize-autoloader | |
- name: Run PHPStan | |
run: vendor/bin/phpstan analyse --memory-limit=512M | |
test_and_release: | |
if: ${{ always() }} | |
needs: [php-cs-fixer] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build test image | |
uses: docker/build-push-action@v4 | |
with: | |
tags: "contentauthor-test:latest" | |
outputs: "type=docker" | |
context: sourcecode/apis/contentauthor | |
target: test | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
- name: Run tests | |
run: | | |
docker run -v "$(pwd):/reports" contentauthor-test \ | |
vendor/bin/phpunit --coverage-clover /reports/coverage.xml | |
- name: Upload coverage to Codecov | |
if: env.shouldPublishImage != '1' | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: sourcecode/apis/contentauthor/coverage.xml | |
fail_ci_if_error: true | |
- name: Configure AWS Credentials | |
if: env.shouldPublishImage == '1' | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_DOCKER_REGISTRY_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_DOCKER_REGISTRY_SECRET_ACCESS_KEY }} | |
aws-region: eu-west-1 | |
role-duration-seconds: 3600 | |
role-session-name: GithubCerpusPushImage | |
- name: Login to AWS docker registry | |
if: env.shouldPublishImage == '1' | |
shell: bash | |
run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws | |
- name: Build and push web container | |
if: env.shouldPublishImage == '1' | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: public.ecr.aws/f0t8l9h1/api-contentauthor-app:${{ inputs.versionToRelease }} | |
context: sourcecode/apis/contentauthor | |
target: web | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
- name: Build and push production container | |
if: env.shouldPublishImage == '1' | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: public.ecr.aws/f0t8l9h1/api-contentauthor-phpfpm:${{ inputs.versionToRelease }} | |
context: sourcecode/apis/contentauthor | |
target: prod | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
- name: Build and push startup container | |
if: env.shouldPublishImage == '1' | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: public.ecr.aws/f0t8l9h1/api-contentauthor-deploy:${{ inputs.versionToRelease }} | |
context: sourcecode/apis/contentauthor | |
target: startup | |
cache-from: type=gha | |
cache-to: type=gha,mode=max |