From 80b7d44a95f551f161498f90efeef3f1d68df72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 28 Jan 2022 18:29:01 +0100 Subject: [PATCH] Enhancement: Reuse composite actions from ergebnis/.github --- .../determine-cache-directory/action.yaml | 16 ----- .../composer/composer/install/action.yaml | 22 ------ .../actions/composer/composer/install/run.sh | 25 ------- .github/workflows/integrate.yaml | 69 ++++++++++++------- .github/workflows/merge.yaml | 58 ++-------------- .github/workflows/release.yaml | 13 +--- .github/workflows/renew.yaml | 14 ++-- .github/workflows/triage.yaml | 27 +------- 8 files changed, 60 insertions(+), 184 deletions(-) delete mode 100644 .github/actions/composer/composer/determine-cache-directory/action.yaml delete mode 100644 .github/actions/composer/composer/install/action.yaml delete mode 100755 .github/actions/composer/composer/install/run.sh diff --git a/.github/actions/composer/composer/determine-cache-directory/action.yaml b/.github/actions/composer/composer/determine-cache-directory/action.yaml deleted file mode 100644 index 4842e88c..00000000 --- a/.github/actions/composer/composer/determine-cache-directory/action.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# https://docs.github.com/en/actions/creating-actions/creating-a-composite-run-steps-action -# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs -# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions -# https://getcomposer.org/doc/03-cli.md#composer-cache-dir - -name: "Determine composer cache directory" - -description: "Determines the composer cache directory and exports it as COMPOSER_CACHE_DIR environment variable" - -runs: - using: "composite" - - steps: - - name: "Determine composer cache directory" - shell: "bash" - run: "echo \"COMPOSER_CACHE_DIR=$(composer config cache-dir)\" >> $GITHUB_ENV" diff --git a/.github/actions/composer/composer/install/action.yaml b/.github/actions/composer/composer/install/action.yaml deleted file mode 100644 index bab262e5..00000000 --- a/.github/actions/composer/composer/install/action.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# https://docs.github.com/en/actions/creating-actions/creating-a-composite-run-steps-action -# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs -# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions - -name: "Install dependencies with composer" - -description: "Installs dependencies with composer" - -inputs: - dependencies: - description: "Which dependencies to install, one of \"lowest\", \"locked\", \"highest\"" - required: true - -runs: - using: "composite" - - steps: - - name: "Install ${{ inputs.dependencies }} dependencies with composer" - shell: "bash" - run: "${{ github.action_path }}/run.sh" - env: - COMPOSER_INSTALL_DEPENDENCIES: "${{ inputs.dependencies }}" diff --git a/.github/actions/composer/composer/install/run.sh b/.github/actions/composer/composer/install/run.sh deleted file mode 100755 index a052ba6a..00000000 --- a/.github/actions/composer/composer/install/run.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -dependencies="${COMPOSER_INSTALL_DEPENDENCIES}" - -if [[ ${dependencies} == "lowest" ]]; then - composer update --no-interaction --no-progress --prefer-lowest - - exit $? -fi - -if [[ ${dependencies} == "locked" ]]; then - composer install --no-interaction --no-progress - - exit $? -fi - -if [[ ${dependencies} == "highest" ]]; then - composer update --no-interaction --no-progress - - exit $? -fi - -echo "::error::The value for the \"dependencies\" input needs to be one of \"lowest\", \"locked\"', \"highest\"' - got \"${dependencies}\" instead." - -exit 1 diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index a8c1c465..1822a4ae 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -8,9 +8,6 @@ on: # yamllint disable-line rule:truthy branches: - "main" -env: - PHP_EXTENSIONS: "json, mbstring" - jobs: code-coverage: name: "Code Coverage" @@ -33,14 +30,17 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "xdebug" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Set up problem matchers for phpunit/phpunit" run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -50,11 +50,13 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" - name: "Collect code coverage with Xdebug and phpunit/phpunit" + env: + XDEBUG_MODE: "coverage" run: "vendor/bin/phpunit --configuration=test/Unit/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" - name: "Send code coverage report to Codecov.io" @@ -90,14 +92,17 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "none" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Validate composer.json and composer.lock" - run: "composer validate --strict" + run: "composer validate --ansi --strict" - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -107,12 +112,12 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" - name: "Run ergebnis/composer-normalize" - run: "composer normalize --dry-run" + run: "composer normalize --ansi --dry-run" - name: "Create cache directory for friendsofphp/php-cs-fixer" run: "mkdir -p .build/php-cs-fixer" @@ -148,11 +153,14 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "none" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -162,7 +170,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" @@ -190,11 +198,14 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "xdebug" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -204,12 +215,14 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" - name: "Run mutation tests with Xdebug and infection/infection" - run: "vendor/bin/infection --configuration=infection.json" + env: + XDEBUG_MODE: "coverage" + run: "vendor/bin/infection --configuration=infection.json --logger-github" static-code-analysis: name: "Static Code Analysis" @@ -232,11 +245,14 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "none" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, curl, dom, json, mbstring, pcntl, phar, posix, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -246,7 +262,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" @@ -254,7 +270,7 @@ jobs: run: "mkdir -p .build/psalm" - name: "Run vimeo/psalm" - run: "vendor/bin/psalm --config=psalm.xml --diff --shepherd --show-info=false --stats --threads=4" + run: "vendor/bin/psalm --config=psalm.xml --output-format=github --shepherd --show-info=false --stats --threads=4" tests: name: "Tests" @@ -281,14 +297,17 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "none" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Set up problem matchers for phpunit/phpunit" run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -298,7 +317,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 6aa0781c..e7e1526b 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -25,69 +25,23 @@ jobs: steps: - name: "Request review from @ergebnis-bot" - uses: "actions/github-script@v5" + uses: "ergebnis/.github/actions/github/pull-request/request-review@1.3.2" with: github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.workflow_run.pull_requests[0] - const repository = context.repo - - const reviewers = [ - "ergebnis-bot", - ] - - await github.rest.pulls.requestReviewers({ - owner: repository.owner, - repo: repository.repo, - pull_number: pullRequest.number, - reviewers: reviewers, - }) + reviewer: "ergebnis-bot" - name: "Assign @ergebnis-bot" - uses: "actions/github-script@v5" + uses: "ergebnis/.github/actions/github/pull-request/add-assignee@1.3.2" with: github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.workflow_run.pull_requests[0] - const repository = context.repo - - const assignees = [ - "ergebnis-bot", - ] - - await github.rest.issues.addAssignees({ - owner: repository.owner, - repo: repository.repo, - assignees: assignees, - issue_number: pullRequest.number - }) + assignee: "ergebnis-bot" - name: "Approve pull request" - uses: "actions/github-script@v5" + uses: "ergebnis/.github/actions/github/pull-request/approve@1.3.2" with: github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.workflow_run.pull_requests[0] - const repository = context.repo - - await github.rest.pulls.createReview({ - event: "APPROVE", - owner: repository.owner, - repo: repository.repo, - pull_number: pullRequest.number, - }) - name: "Merge pull request" - uses: "actions/github-script@v5" + uses: "ergebnis/.github/actions/github/pull-request/merge@1.3.2" with: github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.workflow_run.pull_requests[0] - const repository = context.repo - - await github.rest.pulls.merge({ - merge_method: "merge", - owner: repository.owner, - pull_number: pullRequest.number, - repo: repository.repo, - }) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 11ff85ac..5a18b726 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,16 +14,7 @@ jobs: runs-on: "ubuntu-latest" steps: - - name: "Determine tag" - id: "determine-tag" - run: "echo \"::set-output name=tag::${GITHUB_REF#refs/tags/}\"" - - name: "Create release" - uses: "actions/create-release@v1.1.4" - env: - GITHUB_TOKEN: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + uses: "ergebnis/.github/actions/github/release/create@1.3.2" with: - draft: false - prerelease: false - release_name: "${{ steps.determine-tag.outputs.tag }}" - tag_name: "${{ steps.determine-tag.outputs.tag }}" + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" diff --git a/.github/workflows/renew.yaml b/.github/workflows/renew.yaml index c73c08d5..c6eebdcc 100644 --- a/.github/workflows/renew.yaml +++ b/.github/workflows/renew.yaml @@ -6,9 +6,6 @@ on: # yamllint disable-line rule:truthy schedule: - cron: "0 0 1 1 *" -env: - PHP_EXTENSIONS: "json, mbstring" - jobs: license: name: "License" @@ -33,14 +30,17 @@ jobs: uses: "shivammathur/setup-php@2.16.0" with: coverage: "none" - extensions: "${{ env.PHP_EXTENSIONS }}" + extensions: "none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" + - name: "Set up problem matchers for PHP" + run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" + - name: "Validate composer.json and composer.lock" - run: "composer validate --strict" + run: "composer validate --ansi --strict" - name: "Determine composer cache directory" - uses: "./.github/actions/composer/composer/determine-cache-directory" + uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.3.2" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2.1.7" @@ -50,7 +50,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Install ${{ matrix.dependencies }} dependencies with composer" - uses: "./.github/actions/composer/composer/install" + uses: "ergebnis/.github/actions/composer/install@1.3.2" with: dependencies: "${{ matrix.dependencies }}" diff --git a/.github/workflows/triage.yaml b/.github/workflows/triage.yaml index d606e929..39be0e6e 100644 --- a/.github/workflows/triage.yaml +++ b/.github/workflows/triage.yaml @@ -15,31 +15,6 @@ jobs: steps: - name: "Add labels based on branch name" - uses: "actions/github-script@v5" + uses: "ergebnis/.github/actions/github/pull-request/add-label-based-on-branch-name@1.3.2" with: github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const branchPrefixLabels = { - feature: "enhancement", - fix: "bug", - } - - const pullRequest = context.payload.pull_request - const repository = context.repo - - const branchName = pullRequest.head.ref - - const matches = branchName.match(new RegExp('^([^/]+)\/')); - - if (matches instanceof Array && branchPrefixLabels.hasOwnProperty(matches[1])) { - const label = branchPrefixLabels[matches[1]] - - github.rest.issues.addLabels({ - issue_number: pullRequest.number, - labels: [ - label - ], - owner: repository.owner, - repo: repository.repo, - }); - }