Skip to content

❤️ Provides default community health files and composite actions for the @ergebnis organization.

License

Notifications You must be signed in to change notification settings

ergebnis/.github

Repository files navigation

.github

Integrate Merge Release

This project provides community health files and composite actions for the @ergebnis organization.

Composite Actions

This project provides the following composite actions:

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/checkout@v3.0.2"

      - name: "Set up PHP"
        uses: "shivammathur/setup-php@2.21.2"
        with:
          coverage: "none"
          php-version: "8.1"

      - name: "Determine composer cache directory"
        uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.8.0"

      - name: "Cache dependencies installed with composer"
        uses: "actions/cache@v3.0.8"
        with:
          path: "${{ env.COMPOSER_CACHE_DIR }}"
          key: "composer-${{ hashFiles('composer.lock') }}"
          restore-keys: "composer-"

For details, see actions/composer/determine-cache-directory/action.yaml.

Inputs

  • working-directory, optional: The working directory to use. Defaults to ".".

Outputs

none

Side Effects

  • The COMPOSER_CACHE_DIR environment 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/checkout@v3.0.2"

      - name: "Set up PHP"
        uses: "shivammathur/setup-php@2.21.2"
        with:
          coverage: "none"
          php-version: "8.1"

      - name: "Determine composer root version"
        uses: "ergebnis/.github/actions/composer/determine-root-version@1.8.0"

For details, see actions/composer/determine-root-version/action.yaml.

Inputs

  • branch, optional: The name of the branch, defaults to "main".
  • working-directory, optional: The working directory to use, defaults to ".".

Outputs

none

Side Effects

  • 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/checkout@v3.0.2"

      - name: "Set up PHP"
        uses: "shivammathur/setup-php@2.21.2"
        with:
          coverage: "none"
          php-version: "8.1"

      - name: "Determine composer cache directory"
        uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.8.0"

      - name: "Cache dependencies installed with composer"
        uses: "actions/cache@v3.0.8"
        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/install@1.8.0"
        with:
          dependencies: "${{ matrix.dependencies }}"

For details, see actions/composer/install/action.yaml.

Inputs

  • dependencies, optional: Which dependencies to install, one of "lowest", "locked", "highest"
  • working-directory, optional: The working directory to use, defaults to ".".

Outputs

none

Side Effects

  • 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-lowest
  • When dependencies is set to "locked", dependencies are installed in the directory specified by working-directory with

    composer install --ansi --no-interaction --no-progress
  • When dependencies is set to "highest", dependencies are installed in the directory specified by working-directory with

    composer update --ansi --no-interaction --no-progress

This 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/add-assignee@1.8.0"
        with:
          assignee: "ergebnis-bot"
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

For details, see actions/github/pull-request/add-assignee/action.yaml.

Inputs

  • 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

Outputs

none

Side Effects

  • The GitHub user with the username specified in the assignee input is assigned to the pull request.
  • The PULL_REQUEST_NUMBER environment variable contains the number of 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/add-label-based-on-branch-name@1.8.0"
        with:
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

For details, see actions/github/pull-request/add-label-based-on-branch-name/action.yaml.

Inputs

  • github-token, required: The GitHub token of a user with permission to add labels to to a pull request.

Outputs

none

Side Effects

  • When the branch name starts with feature/, the label enhancement is added to the pull request by the user who owns the GitHub token specified with the github-token input.
  • When the branch name starts with fix/, the label bug is added to the pull request by the user who owns the GitHub token specified with the github-token input.
  • The PULL_REQUEST_BRANCH_NAME environment variable contains the name of the head branch of the pull request.
  • The PULL_REQUEST_NUMBER environment variable contains the number of the pull request.

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/approve@1.8.0"
        with:
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

For details, see actions/github/pull-request/merge/action.yaml.

Inputs

  • github-token, required: The GitHub token of a user with permission to approve a pull request

Outputs

none

Side Effects

  • The pull request is approved by the user who owns the GitHub token specified with the github-token input.
  • The PULL_REQUEST_NUMBER environment variable contains the number of the pull request.

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/merge@1.8.0"
        with:
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

For details, see actions/github/pull-request/merge/action.yaml.

Inputs

  • github-token, required: The GitHub token of a user with permission to merge a pull request
  • merge-method, option: The merge method to use, one "merge", "rebase", "squash", defaults to "merge"

Outputs

none

Side Effects

  • The pull request is merged by the user who owns the GitHub token specified with the github-token input.
  • The PULL_REQUEST_NUMBER environment variable contains the number of the pull request.

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/request-review@1.8.0"
        with:
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"
          reviewer: "ergebnis-bot"

For details, see actions/github/pull-request/request-review/action.yaml.

Inputs

  • 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.

Outputs

none

Side Effects

  • 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.
  • The PULL_REQUEST_NUMBER environment variable contains the number of the pull request.

This action creates a release.

This is useful 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/create@1.8.0"
        with:
          github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

For details, see actions/github/release/create/action.yaml.

Inputs

  • github-token, required: The GitHub token of a user with permission to create a release.

Outputs

none

Side Effects

  • A release is created by the user who owns the GitHub token specified with the github-token input.
  • The RELEASE_HTML_URL environment variable contains the HTML URL to the release.
  • The RELEASE_ID environment variable contains the release identifier.
  • The RELEASE_TAG environment variable contains the release tag.
  • The RELEASE_UPLOAD_URL environment variable contains the URL for uploading release assets.

This action requests a check run on Oh Dear!.

name: "Deploy"

on:
  push:
    branches:
      - "main"

jobs:
  deploy:
    name: "Deploy"

    runs-on: "ubuntu-latest"

    steps:
    - name: "Checkout"
      uses: "actions/checkout@v3.0.2"
      with:
          fetch-depth: 50

    - name: "Request broken links check on ohdear.app"
      uses: "ergebnis/.github/actions/oh-dear/maintenance-period/start@1.8.0"
      with:
        oh-dear-api-token: "${{ secrets.OH_DEAR_API_TOKEN }}"
        oh-dear-check-id: "${{ secrets.OH_DEAR_BROKEN_LINKS_CHECK_ID }}"

For details, see actions/oh-dear/check/request-run/action.yaml.

Inputs

  • oh-dear-api-token, required: The Oh Dear API token of a user with permission to request a check run
  • oh-dear-check-id, required: Check identifer of an Oh Dear check for which to request a run

Outputs

none

Side Effects

  • A check run is requested by the user who owns the Oh Dear API token specified with the oh-dear-api-token input for the check identified by the oh-dear-check-id 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/checkout@v3.0.2"
      with:
          fetch-depth: 50

    - name: "Start maintenance period on ohdear.app"
      uses: "ergebnis/.github/actions/oh-dear/maintenance-period/start@1.8.0"
      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.

Inputs

  • oh-dear-api-token, required: The Oh Dear API token of a user with permission to start a maintenance period
  • oh-dear-site-id, required: Site identifer of an Oh Dear site for which to start a maintenance period

Outputs

none

Side Effects

  • 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/checkout@v3.0.2"
      with:
          fetch-depth: 50

    - name: "Stop maintenance period on ohdear.app"
      uses: "ergebnis/.github/actions/oh-dear/maintenance-period/stop@1.8.0"
      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.

Inputs

  • oh-dear-api-token, required: The Oh Dear API token of a user with permission to stop a maintenance period
  • oh-dear-site-id, required: Site identifer of an Oh Dear site for which to stop a maintenance period

Outputs

none

Side Effects

  • 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.

This action installs dependencies with phive.

name: "Integrate"

on:
  pull_request: null
  push:
    branches:
      - "main"

jobs:
  tests:
    name: "Tests"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout"
        uses: "actions/checkout@v3.0.2"

      - name: "Set up PHP"
        uses: "shivammathur/setup-php@2.21.2"
        with:
          coverage: "none"
          php-version: "8.1"
          tools: "phive"

      - name: "Install dependencies with phive"
        uses: "ergebnis/.github/actions/phive/install@1.8.0"
        with:
          trust-gpg-keys: "0x033E5F8D801A2F8D,0x2A8299CE842DD38C"

For details, see actions/phive/install/action.yaml.

Inputs

  • phive-home, optional: Which directory to use as PHIVE_HOME directory, defaults to ".build/phive".
  • trust-gpg-keys, required: Which GPG keys to trust, a comma-separated list of trusted GPG keys

Outputs

none

Side Effects

  • Given that phive is available, phive could find a phars.xml, and keys presented by packages are listed using the trust-gpg-keys option, dependencies are installed with phive.

The directory configured by the phive-home directory is cached using actions/cache.

Changelog

The maintainers of this project record notable changes to this project in a changelog.

Contributing

The maintainers of this project suggest following the contribution guide.

Code of Conduct

The maintainers of this project ask contributors to follow the code of conduct.

General Support Policy

The maintainers of this project provide limited support.

You can support the maintenance of this project by sponsoring @localheinz or requesting an invoice for services related to this project.

Security Policy

This project has a security policy.

License

This project uses the MIT license.

Social

Follow @localheinz and @ergebnis on Twitter.