Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
activity

GitHub Action

Create Issue Branch

v1.1

Create Issue Branch

activity

Create Issue Branch

GitHub action that creates a new branch after assigning an issue

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Create Issue Branch

uses: robvanderleek/[email protected]

Learn more about this action in robvanderleek/create-issue-branch

Choose a version

Create Issue Branch

Logo

BCH compliance Build Status Build Status Dependabot Sentry

A GitHub App built with Probot that creates a new branch after assigning an issue.

Built in response to this feature request issue: isaacs/github#1125

Installation

GitHub App

You can install the app for a repository from this page

GitHub Action

Add this to your workflow YAML configuration:

on:
    issues:
        types: [assigned]

jobs:
    create_issue_branch_job:
        runs-on: ubuntu-latest
        steps:
        - name: Create Issue Branch
          uses: robvanderleek/create-issue-branch@master

Usage

The typical workflow is:

  1. An issue is created, for example: Issue 15: Fix nasty bug!

some time may pass

  1. The issue is assigned
  2. When the issue is assigned this app will create a new issue branch (for the example issue this branch will be called issue-15-Fix_nasty_bug)

If the issue is re-assigned no new branch will be created.

Configuration

This app does not require a configuration. However, if you want to override the default behaviour you can do so by placing a YAML file in your repository at the location: .github/issue-branch.yml with the overrides.

Organization/user wide configuration is also supported by putting the YAML file .github/issue-branch.yml in a repository called .github. So, if your organization/username is acme, the full path becomes: https://github.com/acme/.github/blob/master/.github/issue-branch.yml.

If the app has a problem with your configuration YAML (e.g.: invalid content) it will create an issue with the title "Error in Create Issue Branch app configuration" in the repo. Subsequent runs with an invalid configuration will not create new issues, only one stays open.

Branch names

Branch names are generated from the issue, there are 3 flavours:

  1. tiny => an i followed by the issue number, for example: i15
  2. short => the word issue followed by the issue number, for example: issue-15
  3. full => the word issue followed by the issue number followed by the issue title, for example: issue-15-Fix_nasty_bug

The default is full, other types can be configured in the YAML like this:

branchName: tiny

or

branchName: short

Source branch based on issue label

You can override the source branch (by default the "default branch" of the repository is used) based on the issue label.

For example, if you want branches for issues with the enhancement label to have the dev branch as a source and branches for issues with the bug label to have the staging branch as a source, add this to your configuration YAML:

branches:
  - label: enhancement
    name: dev
  - label: bug
    name: staging

When issues have multiple labels the branch of the first match (based on the order in the configuration YAML will be used).

If a configured branch does not exist in the repository the "default branch" is used.

Branch name prefix based on issue label

Branch names can be prefixed based on the label of an issue.

For example, if you want branches for issues with the enhancement label to have the feature/ prefix and branches for issues with the bug label to have the bugfix/ prefix, add this to your configuration YAML:

branches:
  - label: enhancement
    prefix: feature/
  - label: bug
    prefix: bugfix/

You can use ${...} placeholders in the prefix to substitute fields from the GitHub issue assignment JSON object. For example, if you want the GitHub login name of the user that created the issue in the branch prefix, add this to your configuration YAML:

branches:
  - label: enhancement
    prefix: feature/${issue.user.login}/

Check test/fixtures/issues.assigned.json for all possible placeholder names.

Matching labels with wildcards

Wildcard characters '?' (matches any single character) and '*' (matches any sequence of characters, including the empty sequence) can be used in the label field.

For example, to set the default/fallback prefix issues/ for issues that do not have the enhancement or bug label, use this configuration:

branches:
  - label: enhancement
    prefix: feature/
  - label: bug
    prefix: bugfix/
  - label: '*'
    prefix: issues/

Remember to put quotes around a single asterisk ('*') in YAML

Feedback, suggestions and bug reports

Please create an issue here: https://github.com/robvanderleek/create-issue-branch/issues

Contributing

If you have suggestions for how create-issue-branch could be improved, or want to report a bug, open an issue! We'd love all and any contributions.

For more, check out the Contributing Guide.

License

ISC © 2019 Rob van der Leek [email protected] (https://twitter.com/robvanderleek)