Skip to content

GitHub Action to validate and create GitHub Releases from pull requests

License

Notifications You must be signed in to change notification settings

5monkeys/monkey-release-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Monkey Release Action

Validates a pull request intended for creating a GitHub Release. When merged the action will then create the release.

The action flow

  • Trigger on PullRequestEvent with type opened, edited or reopened.
    • Add a label defined by release_label to the PR.
    • Validate title.
      • Checks that the PR title matches the defined release_pattern.
      • If release_pattern is a Calver containing named capture groups <year>, <month> and/or <day> it will check that the current date matches.
      • Check that a release with the same title does not already exist.
    • Validate that the PR body is not empty.
    • Validates that the PR is from an allowed branch defined by head_branch.
    • If above checks fails it will review the PR and request changes.
    • If above checks passes it will approve the PR.
  • Trigger on PullRequestEvent with type closed and merged.
    • Create a GitHub Release with the title and body of the PR. The release tag will be constructed as tag_prefix/release.

Inputs

repo_token Required

The GITHUB_TOKEN. See details.

base_branch

The branch which the release PR will target. Defaults to master.

head_branch

The branch which the release PR originates from. Defaults to dev.

release_pattern

The pattern to validate the PR title against. If it contains any of the named capture groups <year>, <month> and/or <day> Calver validation will occur to ensure that the date is current.

Make sure it validates against https://regexr.com.

Defaults to ^(?<year>[0-9]{4})\.(?<month>[0-9]{2})\.(?<day>[0-9]{2})-\d$.

tag_prefix

The prefix to use when tagging release. Set to null or an empty string to disable tag-prefixing. Defaults to releases/.

tag_transformer

Apply a transform on the tag before validating and releasing it. Available choices: "title", "dashes-and-number".

The default is title, which supplies the PR title as is.

When using dashes-and-number, a PR with number 32 and title "Fix thing" becomes #32-fix-thing.

approve_releases

Sets if a PR should just be commented upon or approved and request changes depending on the success of validation. Accepts true or false. Defaults to true .

release_label

The label to add to the release PR. Set to an empty string to disable. Defaults to release.

prerelease

Creates a prerelease instead. Defaults to false.

validate

Validate name and description of PR according to provided input. Defaults to true.

create_status

Sets if a GitHub status should be created by the action. This is useful when wanting to restrict merging until the action runs successfully. Since GitHub creates a check on the PR for every PR event that triggers the action isn't useful to restrict merging by the action checks. Instead use this status specified by status_name. Defaults to true.

status_name

The name of the status created when create_status is set to true. Defaults to Monkey Release.

valid_release_message

Message to comment with on valid release PRs. Can be overridden to add custom cheerfulness or reminders. Defaults to Valid release 🍌.

Outputs

release

The release title.

Example usage

on:
  pull_request:
    types: [opened, reopened, edited, closed]
    branches:
      - master
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: 5monkeys/monkey-release-action@master
        id: release
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          base_branch: master
          head_branch: dev
          tag_prefix: releases/
          approve_releases: true
          release_label: release

Development

  • Install deps: npm ci
  • Run tests: npm run test
  • Run lint: npm run lint
  • Package application npm run package. Remember to run this before committing anything.

About

GitHub Action to validate and create GitHub Releases from pull requests

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published