Thanks to visit codestin.com
Credit goes to github.com

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 Triage

Provides community health files for the @ergebnis organization.

💡 Also see GitHub Docs: Creating a default community health file.

Composite Actions

This repository 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/[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.

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/[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.

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/[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.

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/[email protected]"
        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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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/[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.

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.

Changelog

Please have a look at CHANGELOG.md.

Contributing

Please have a look at CONTRIBUTING.md.

Code of Conduct

Please have a look at CODE_OF_CONDUCT.md.

Curious what I am building?

📬 Subscribe to my list, and I will occasionally send you an email to let you know what I am working on.

About

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

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 5