LoginSignup
16
9

More than 3 years have passed since last update.

GitHub Actionsの汎用的なアクションを紹介

Last updated at Posted at 2019-12-17

GitHub Actionsを試してみて、汎用的に使えるなって思ったアクションを紹介します!

GitHub Actionsを利用するにあたり下記の公式ドキュメントを見ておけば、何ができるか想像できるかと思います。

紹介するアクションたち

Labeler

PRの修正ファイルパスに基づいて、設定したラベルを自動付与してくれるアクションです。
導入することで、「このモジュール修正したら、対象のラベルつけてね!」っていう運用を自動化することができます。

設定ファイルに下記を設定しておくと、、、

test:
  - tests/**/*

model:
  - model/**/*
  • testsディレクトリに変更が入れば、testラベル
  • modelディレクトリに変更が入れば、modelラベル を自動で付与してくれます。

導入方法

参考PR

定義ファイル

.github/labeler.yml
workflow:
  - .github/*.yml
  - .github/workflows/**/*

workflowファイル

.github/workflows/labeler.yml
name: Labeler

on:
  - pull_request

jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/labeler@v2
        with:
          repo-token: '${{ secrets.GITHUB_TOKEN }}'
          configuration-path: '.github/labeler.yml'

結果

こんな感じで、workflowラベルが自動で付与されます。(存在しないタグ付与の場合、グレー色で作成してくれます)
Screenshot_2019-12-16 Add labeler by deresmos · Pull Request #1 · deresmos actions-sample.png

GitHub Labeler

ラベル設定ファイルをもとに、ラベル作成・変更・削除を行うアクションです。
ラベル管理を楽にすることができます。

下記のように設定すれば、自動的にbugラベルを作ってくれます。

- name: bug
  color: d73a4a
  description: "Something isn't working"

導入方法

参考PR

定義ファイル

.github/labels.yml
- name: ready-for-merge
  color: 00ff00

- name: experimental
  color: ffff00
- name: WIP
  color: ffff00

# あといろいろ...

workflowファイル

.github/workflows/sync_labels.yml
name: Sync labels

on:
  push:
    # masterに修正反映。かつ、関連ファイルに修正があった場合のみ実行する
    branches:
      - master
    paths:
      - '.github/labels.yml'
      - '.github/workflows/label_sync.yml'

jobs:
  labeler:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: crazy-max/ghaction-github-labeler@v1.1.1
        with:
          yaml_file: '.github/labels.yml'
          skip_delete: true # 定義ファイルに記載の無いラベルの削除を行わない
          dry_run: false # 実際に反映する。trueの場合は、結果のみ表示で反映しない。
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

結果

Screenshot_2019-12-17 deresmos actions-sample.png

Release Drafter

自動でリリースノートを作成してくれるアクションです。
割とリリース書くのめんどかったりするので、非常におすすめなアクションです。

下記のような設定をしていれば、PRにbugfixラベルが付与されている場合は、Bug Fixesセクションに。
それ以外は、Changesセクションに。自動的に割り振ってくれます。

categories:
  - title: 'Bug Fixes'
    labels:
      - 'fix'
      - 'bugfix'
      - 'bug'

下記画像のように自動作成してくれます。
下書き状態で作ってくれるので、編集して投稿すれば、完成です。
Screenshot_2019-12-16 deresmos actions-sample(1).png

導入方法

参考PR
※typoしていたので、Fix typo PRで修正しました。

Release Drafter Appを、導入し、全てのレポジトリ、もしくは指定レポジトリのみ権限を与えるようにしてください。

.github/release-drafter.yml
name-template: 'v$NEXT_PATCH_VERSION' # 次バージョンのタグ名をタイトルに設定
tag-template: 'v$NEXT_PATCH_VERSION' # 次バージョンのタグ名を設定
exclude-labels: # 対象のラベルが付与されてるPRは、リリース内容に乗せない
  - 'release'
categories: # 対象ラベルに一致したら、セクション分けてくれる
  - title: 'Features'
    labels:
      - 'feature'
      - 'enhancement'
  - title: 'Bug Fixes'
    labels:
      - 'fix'
      - 'bug'
      - 'bugfix'
  - title: 'Maintenance'
    labels:
      - 'chore'
change-template: '- $TITLE (#$NUMBER) @$AUTHOR' # PR情報のテンプレート
template: | # リリースの内容テンプレート
  ## Changes
  $CHANGES
.github/workflows/release_drafter.yml
name: Release Draft

on:
  push:
    branches:
      - master

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    steps:
      - uses: release-drafter/release-drafter@v5.3.1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

まとめ

公式版リリースや、自己ホストランナーも発表されて、ますます勢いが加速してます。
Actionsを利用して楽したり、効率化したり、面白いことしたり色々できそうでワクワクしますね!

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9