GitHub Actionsを試してみて、汎用的に使えるなって思ったアクションを紹介します!
GitHub Actionsを利用するにあたり下記の公式ドキュメントを見ておけば、何ができるか想像できるかと思います。
-
GitHub Actionsのワークフロー構文
- 構文をチェック
-
ワークフローをトリガーするイベント
- イベントのチェック
-
GitHubホストランナーにインストールされるソフトウェア
- 仮想環境のチェック
紹介するアクションたち
-
Labeler
- PRの修正ファイルに基づいて、ラベルを自動付与
-
GitHub Labeler
- ラベル管理
-
Release Drafter
- リリースを自動で作成
Labeler
PRの修正ファイルパスに基づいて、設定したラベルを自動付与してくれるアクションです。
導入することで、「このモジュール修正したら、対象のラベルつけてね!」っていう運用を自動化することができます。
設定ファイルに下記を設定しておくと、、、
test:
- tests/**/*
model:
- model/**/*
-
tests
ディレクトリに変更が入れば、test
ラベル -
model
ディレクトリに変更が入れば、model
ラベル
を自動で付与してくれます。
導入方法
定義ファイル
workflow:
- .github/*.yml
- .github/workflows/**/*
workflowファイル
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
ラベルが自動で付与されます。(存在しないタグ付与の場合、グレー色で作成してくれます)
GitHub Labeler
ラベル設定ファイルをもとに、ラベル作成・変更・削除を行うアクションです。
ラベル管理を楽にすることができます。
下記のように設定すれば、自動的にbug
ラベルを作ってくれます。
- name: bug
color: d73a4a
description: "Something isn't working"
導入方法
定義ファイル
- name: ready-for-merge
color: 00ff00
- name: experimental
color: ffff00
- name: WIP
color: ffff00
# あといろいろ...
workflowファイル
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 }}
結果
Release Drafter
自動でリリースノートを作成してくれるアクションです。
割とリリース書くのめんどかったりするので、非常におすすめなアクションです。
下記のような設定をしていれば、PRにbugfix
ラベルが付与されている場合は、Bug Fixesセクションに。
それ以外は、Changesセクションに。自動的に割り振ってくれます。
categories:
- title: 'Bug Fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
下記画像のように自動作成してくれます。
下書き状態で作ってくれるので、編集して投稿すれば、完成です。
導入方法
参考PR
※typoしていたので、Fix typo PRで修正しました。
Release Drafter Appを、導入し、全てのレポジトリ、もしくは指定レポジトリのみ権限を与えるようにしてください。
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
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を利用して楽したり、効率化したり、面白いことしたり色々できそうでワクワクしますね!