Provides community health files for the @ergebnis organization.
💡 Also see GitHub Docs: Creating a default community health file.
This repository provides the following composite actions:
ergebnis/.github/actions/composer/determine-cache-directoryergebnis/.github/actions/composer/determine-root-versionergebnis/.github/actions/composer/installergebnis/.github/actions/github/pull-request/add-assigneeergebnis/.github/actions/github/pull-request/add-label-based-on-branch-nameergebnis/.github/actions/github/pull-request/approveergebnis/.github/actions/github/pull-request/mergeergebnis/.github/actions/github/pull-request/request-reviewergebnis/.github/actions/github/release/createergebnis/.github/actions/oh-dear/maintenance-period/startergebnis/.github/actions/oh-dear/maintenance-period/stop
This action determines the cache directory for composer and exports it as COMPOSER_CACHE_DIR environment variable.
This is useful for caching dependencies installed with composer using actions/cache.
name: "Integrate"
on:
pull_request: null
push:
branches:
- "main"
jobs:
tests:
name: "Tests"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/[email protected]"
- name: "Set up PHP"
uses: "shivammathur/[email protected]"
with:
coverage: "none"
php-version: "8.1"
- name: "Determine composer cache directory"
uses: "ergebnis/.github/actions/composer/[email protected]"
- name: "Cache dependencies installed with composer"
uses: "actions/[email protected]"
with:
path: "${{ env.COMPOSER_CACHE_DIR }}"
key: "composer-${{ hashFiles('composer.lock') }}"
restore-keys: "composer-"For details, see actions/composer/determine-cache-directory/action.yaml.
working-directory, optional: The working directory to use. Defaults to"'".".
none
- The
COMPOSER_CACHE_DIRenvironment variable contains the path to the composer cache directory.
This action determines the composer root version and exports it as COMPOSER_ROOT_VERSION environment variable.
This is useful for a package that depends on itself, for example, phpunit/phpunit
name: "Integrate"
on:
pull_request: null
push:
branches:
- "main"
jobs:
tests:
name: "Tests"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/[email protected]"
- name: "Set up PHP"
uses: "shivammathur/[email protected]"
with:
coverage: "none"
php-version: "8.1"
- name: "Determine composer root version"
uses: "ergebnis/.github/actions/composer/[email protected]"For details, see actions/composer/determine-root-version/action.yaml.
branch, optional: The name of the branch, defaults to"main".working-directory, optional: The working directory to use, defaults to".".
none
The COMPOSER_ROOT_VERSION environment variable contains the root version if it has been defined as branch-alias in composer.json.
{
"extra": {
"branch-alias": {
"dev-main": "10.0-dev"
}
}
}This action installs or updates dependencies with composer.
name: "Integrate"
on:
pull_request: null
push:
branches:
- "main"
jobs:
tests:
name: "Tests"
runs-on: "ubuntu-latest"
strategy:
matrix:
dependencies:
- "lowest"
- "locked"
- "highest"
steps:
- name: "Checkout"
uses: "actions/[email protected]"
- name: "Set up PHP"
uses: "shivammathur/[email protected]"
with:
coverage: "none"
php-version: "8.1"
- name: "Determine composer cache directory"
uses: "ergebnis/.github/actions/composer/[email protected]"
- name: "Cache dependencies installed with composer"
uses: "actions/[email protected]"
with:
path: "${{ env.COMPOSER_CACHE_DIR }}"
key: "composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}"
restore-keys: "composer-${{ matrix.dependencies }}-"
- name: "Install ${{ matrix.dependencies }} dependencies with composer"
uses: "ergebnis/.github/actions/composer/[email protected]"
with:
dependencies: "${{ matrix.dependencies }}"For details, see actions/composer/install/action.yaml.
dependencies, optional: Which dependencies to install, one of"lowest","locked","highest"working-directory, optional: The working directory to use, defaults to".".
none
When dependencies is set to "lowest", dependencies are installed in the directory specified by working-directory with
composer update --ansi --no-interaction --no-progress --prefer-lowestWhen dependencies is set to "locked", dependencies are installed in the directory specified by working-directory with
composer install --ansi --no-interaction --no-progressWhen dependencies is set to "highest", dependencies are installed in the directory specified by working-directory with
composer update --ansi --no-interaction --no-progressThis action adds an assignee to a pull request.
This is useful when you want to automatically merge a pull request, but prefer to assign a bot user beforehand.
name: "Merge"
on:
workflow_run:
types:
- "completed"
workflows:
- "Integrate"
jobs:
merge:
name: "Merge"
runs-on: "ubuntu-latest"
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success' &&
github.actor == 'dependabot[bot]' && (
startsWith(github.event.workflow_run.head_commit.message, 'composer(deps-dev)') ||
startsWith(github.event.workflow_run.head_commit.message, 'github-actions(deps)')
)
steps:
- name: "Assign @ergebnis-bot"
uses: "ergebnis/.github/actions/github/pull-request/[email protected]"
with:
assignee: "ergebnis-bot"
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"For details, see actions/github/pull-request/add-assignee/action.yaml.
assignee, required: The username of a user to add as an assignee to a pull request.github-token, required: The GitHub token of a user with permission to add assignees to a pull request
none
The GitHub user with the username specified in the assignee input is assigned to the pull request.
This action adds a label to a pull request based on the name of the branch.
# https://docs.github.com/en/actions
name: "Triage"
on: # yamllint disable-line rule:truthy
pull_request_target:
types:
- "opened"
jobs:
label:
name: "Label"
runs-on: "ubuntu-latest"
steps:
- name: "Add labels based on branch name"
uses: "ergebnis/.github/actions/github/pull-request/[email protected]"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"For details, see actions/github/pull-request/add-label-based-on-branch-name/action.yaml.
github-token, required: The GitHub token of a user with permission to add labels to to a pull request.
none
- When the branch name starts with
feature/, the labelenhancementis added to the pull request by the user who owns the GitHub token specified with thegithub-tokeninput. - When the branch name starts with
fix/, the labelbugis added to the pull request by the user who owns the GitHub token specified with thegithub-tokeninput.
This action approves a pull request.
This is useful when you want to automatically merge a pull request, but prefer to let a bot user approve the pull request beforehand.
name: "Merge"
on:
workflow_run:
types:
- "completed"
workflows:
- "Integrate"
jobs:
merge:
name: "Merge"
runs-on: "ubuntu-latest"
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success' &&
github.actor == 'dependabot[bot]' && (
startsWith(github.event.workflow_run.head_commit.message, 'composer(deps-dev)') ||
startsWith(github.event.workflow_run.head_commit.message, 'github-actions(deps)')
)
steps:
- name: "Approve pull request"
uses: "ergebnis/.github/actions/github/pull-request/[email protected]"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"For details, see actions/github/pull-request/merge/action.yaml.
github-token, required: The GitHub token of a user with permission to approve a pull request
none
The pull request is approved by the user who owns the GitHub token specified with the github-token input.
This action merges a pull request.
This is useful when you want to automatically merge a pull request, for example, opened by dependabot.
name: "Merge"
on:
workflow_run:
types:
- "completed"
workflows:
- "Integrate"
jobs:
merge:
name: "Merge"
runs-on: "ubuntu-latest"
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success' &&
github.actor == 'dependabot[bot]' && (
startsWith(github.event.workflow_run.head_commit.message, 'composer(deps-dev)') ||
startsWith(github.event.workflow_run.head_commit.message, 'github-actions(deps)')
)
steps:
- name: "Merge pull request"
uses: "ergebnis/.github/actions/github/pull-request/[email protected]"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"For details, see actions/github/pull-request/merge/action.yaml.
github-token, required: The GitHub token of a user with permission to merge a pull requestmerge-method, option: The merge method to use, one"merge","rebase","squash", defaults to"merge"
none
The pull request is merged by the user who owns the GitHub token specified with the github-token input.
This action requests a review for a pull request.
This is useful when you want to automatically merge a pull request, but prefer to let a bot user self-request a review for the pull request beforehand.
name: "Merge"
on:
workflow_run:
types:
- "completed"
workflows:
- "Integrate"
jobs:
merge:
name: "Merge"
runs-on: "ubuntu-latest"
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success' &&
github.actor == 'dependabot[bot]' && (
startsWith(github.event.workflow_run.head_commit.message, 'composer(deps-dev)') ||
startsWith(github.event.workflow_run.head_commit.message, 'github-actions(deps)')
)
steps:
- name: "Request review from @ergebnis-bot"
uses: "ergebnis/.github/actions/github/pull-request/[email protected]"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
reviewer: "ergebnis-bot"For details, see actions/github/pull-request/request-review/action.yaml.
github-token, required: The GitHub token of a user with permission to request reviewers for a pull request.reviewer, required: The username of user to request review from for a pull request.
none
A pull request review is requested for the user identified by the value of the reviewer input by the user who owns the GitHub token specified with the github-token input.
This action creates a release.
This is usefull when you automatically want to create releases with automatically generated release notes.
name: "Release"
on:
push:
tags:
- "**"
jobs:
release:
name: "Release"
runs-on: "ubuntu-latest"
steps:
- name: "Create release"
uses: "ergebnis/.github/actions/github/release/[email protected]"
with:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"For details, see actions/github/release/create/action.yaml.
github-token, required: The GitHub token of a user with permission to create a release.
none
A release is created by the user who owns the GitHub token specified with the github-token input.
This action starts a maintenance period on Oh Dear!.
name: "Deploy"
on:
push:
branches:
- "main"
jobs:
deploy:
name: "Deploy"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/[email protected]"
with:
fetch-depth: 50
- name: "Start maintenance period on ohdear.app"
uses: "ergebnis/.github/actions/oh-dear/maintenance-period/[email protected]"
with:
oh-dear-api-token: "${{ secrets.OH_DEAR_API_TOKEN }}"
oh-dear-site-id: "${{ secrets.OH_DEAR_SITE_ID }}"For details, see actions/oh-dear/maintenance-period/start/action.yaml.
oh-dear-api-token, required: The Oh Dear API token of a user with permission to start a maintenance periodoh-dear-site-id, required: Site identifer of an Oh Dear site for which to start a maintenance period
none
A maintenance period is started by the user who owns the Oh Dear API token specified with the oh-dear-api-token input for the site identified by the oh-dear-site-id input.
This action stops a maintenance period on Oh Dear!.
name: "Deploy"
on:
push:
branches:
- "main"
jobs:
deploy:
name: "Deploy"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/[email protected]"
with:
fetch-depth: 50
- name: "Stop maintenance period on ohdear.app"
uses: "ergebnis/.github/actions/oh-dear/maintenance-period/[email protected]"
with:
oh-dear-api-token: "${{ secrets.OH_DEAR_API_TOKEN }}"
oh-dear-site-id: "${{ secrets.OH_DEAR_SITE_ID }}"For details, see actions/oh-dear/maintenance-period/stop/action.yaml.
oh-dear-api-token, required: The Oh Dear API token of a user with permission to stop a maintenance periodoh-dear-site-id, required: Site identifer of an Oh Dear site for which to stop a maintenance period
none
A maintenance period is stopped by the user who owns the Oh Dear API token specified with the oh-dear-api-token input for the site identified by the oh-dear-site-id input.
Please have a look at CHANGELOG.md.
Please have a look at CONTRIBUTING.md.
Please have a look at CODE_OF_CONDUCT.md.
📬 Subscribe to my list, and I will occasionally send you an email to let you know what I am working on.