Skip to content

Commit

Permalink
Enhancement: Synchronize with ergebnis/php-package-template
Browse files Browse the repository at this point in the history
  • Loading branch information
localheinz committed Jan 22, 2022
1 parent b4c8de9 commit 6340c4c
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 103 deletions.
78 changes: 53 additions & 25 deletions .github/workflows/integrate.yaml
Expand Up @@ -8,9 +8,6 @@ on: # yamllint disable-line rule:truthy
branches:
- "main"

env:
PHP_EXTENSIONS: "mbstring"

jobs:
code-coverage:
name: "Code Coverage"
Expand All @@ -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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -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.2.1"
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"
Expand All @@ -80,7 +82,7 @@ jobs:
uses: "actions/checkout@v2.4.0"

- name: "Lint YAML files"
uses: "ibiqlik/action-yamllint@v3"
uses: "ibiqlik/action-yamllint@v3.1"
with:
config_file: ".yamllint.yaml"
file_or_dir: "."
Expand All @@ -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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -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.2.1"
with:
dependencies: "${{ matrix.dependencies }}"

- name: "Run ergebnis/composer-normalize"
run: ".phive/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"
Expand Down Expand Up @@ -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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -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.2.1"
with:
dependencies: "${{ matrix.dependencies }}"

Expand Down Expand Up @@ -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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -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.2.1"
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"
Expand All @@ -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, 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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -246,10 +262,16 @@ 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.2.1"
with:
dependencies: "${{ matrix.dependencies }}"

- name: "Create cache directory for phpstan/phpstan"
run: "mkdir -p .build/phpstan"

- name: "Run phpstan/phpstan"
run: "vendor/bin/phpstan --configuration=phpstan.neon --memory-limit=-1"

- name: "Create cache directory for vimeo/psalm"
run: "mkdir -p .build/psalm"

Expand Down Expand Up @@ -281,14 +303,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.2.1"

- name: "Cache dependencies installed with composer"
uses: "actions/cache@v2.1.7"
Expand All @@ -298,9 +323,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.2.1"
with:
dependencies: "${{ matrix.dependencies }}"

- name: "Run unit tests with phpunit/phpunit"
run: "vendor/bin/phpunit --configuration=test/Unit/phpunit.xml"

- name: "Run integration tests with phpunit/phpunit"
run: "vendor/bin/phpunit --configuration=test/Integration/phpunit.xml"
80 changes: 46 additions & 34 deletions .github/workflows/merge.yaml
Expand Up @@ -29,65 +29,77 @@ jobs:
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const pullRequest = context.payload.workflow_run.pull_requests[0]
const repository = context.repo
const pullRequest = context.payload.workflow_run.pull_requests[0];
const reviewers = [
"ergebnis-bot",
]
];
await github.rest.pulls.requestReviewers({
owner: repository.owner,
repo: repository.repo,
pull_number: pullRequest.number,
reviewers: reviewers,
})
try {
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
pull_number: pullRequest.number,
repo: context.repo.repo,
reviewers: reviewers,
});
} catch (error) {
core.setFailed(error.message);
}
- name: "Assign @ergebnis-bot"
uses: "actions/github-script@v5"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const pullRequest = context.payload.workflow_run.pull_requests[0]
const repository = context.repo
const pullRequest = context.payload.workflow_run.pull_requests[0];
const assignees = [
"ergebnis-bot",
]
];
await github.rest.issues.addAssignees({
owner: repository.owner,
repo: repository.repo,
assignees: assignees,
issue_number: pullRequest.number
})
try {
await github.rest.issues.addAssignees({
assignees: assignees,
issue_number: pullRequest.number
owner: context.repo.owner,
repo: context.repo.repo,
});
} catch (error) {
core.setFailed(error.message);
}
- name: "Approve pull request"
uses: "actions/github-script@v5"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const pullRequest = context.payload.workflow_run.pull_requests[0]
const repository = context.repo
const pullRequest = context.payload.workflow_run.pull_requests[0];
await github.rest.pulls.createReview({
event: "APPROVE",
owner: repository.owner,
repo: repository.repo,
pull_number: pullRequest.number,
})
try {
await github.rest.pulls.createReview({
event: "APPROVE",
owner: context.repo.owner,
pull_number: pullRequest.number,
repo: context.repo.repo,
});
} catch (error) {
core.setFailed(error.message);
}
- name: "Merge pull request"
uses: "actions/github-script@v5"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const pullRequest = context.payload.workflow_run.pull_requests[0]
const repository = context.repo
const pullRequest = context.payload.workflow_run.pull_requests[0];
await github.rest.pulls.merge({
merge_method: "merge",
owner: repository.owner,
pull_number: pullRequest.number,
repo: repository.repo,
})
try {
await github.rest.pulls.merge({
merge_method: "merge",
owner: context.repo.owner,
pull_number: pullRequest.number,
repo: context.repo.repo,
});
} catch (error) {
core.setFailed(error.message);
}
41 changes: 14 additions & 27 deletions .github/workflows/release.yaml
Expand Up @@ -14,37 +14,24 @@ jobs:
runs-on: "ubuntu-latest"

steps:
- name: "Determine release tag"
- name: "Determine tag"
run: "echo \"RELEASE_TAG=${GITHUB_REF#refs/tags/}\" >> $GITHUB_ENV"

- name: "Determine release body"
uses: "actions/github-script@v5"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const repository = context.repo;
const response = await github.rest.repos.generateReleaseNotes({
owner: repository.owner,
repo: repository.repo,
tag_name: "${{ env.RELEASE_TAG }}",
})
core.exportVariable("RELEASE_BODY", response.data.body)
- name: "Create release"
uses: "actions/github-script@v5"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
script: |
const repository = context.repo
await github.rest.repos.createRelease({
body: "${{ env.RELEASE_BODY }}",
draft: false,
name: "${{ env.RELEASE_TAG }}",
owner: repository.owner,
prerelease: false,
repo: repository.repo,
tag_name: "${{ env.RELEASE_TAG }}",
})
try {
await github.rest.repos.createRelease({
draft: false,
generate_release_notes: true,
name: process.env.RELEASE_TAG,
owner: context.repo.owner,
prerelease: false,
repo: context.repo.repo,
tag_name: process.env.RELEASE_TAG,
});
} catch (error) {
core.setFailed(error.message);
}

0 comments on commit 6340c4c

Please sign in to comment.