概要
- GitHub Actionsを使ってちょっとした業務改善できないか
- デフォルトのラベルがちょっと扱いづらい
- 他のリポジトリからラベルの名前と色をパクろう...!
- GitHubのラベルを手で作っていくのがめんどい...😭
- 3個目を作った辺りから飽きてくる😮💨
そうだ、ファイルで管理しよう😎
Gitシリーズ記事まとめ
利用ツールなど
- https://github.com/actions/checkout
- https://github.com/actions/setup-node
- https://github.com/azu/github-label-setup
こちらのアクション、ライブラリを使用します。
実装
下記、2つのファイルを用意します。
.github/labels.json
.github/workflows/sync-labels.yaml
.github/labels.json
.github/labels.json
[
{
"name": "bug",
"color": "FC2C2B",
"description": "種別: 不具合の修正"
},
{
"name": "feature",
"color": "375E97",
"description": "種別: 新機能"
},
{
"name": "document",
"color": "FFFFFF",
"description": "種別: ドキュメントの変更"
},
{
"name": "chore",
"color": "E2601E",
"description": "種別: ツールやライブラリの変更",
},
{
"name": "refactor",
"color": "AFD38D",
"description": "種別: リファクタリング"
},
{
"name": "duplicate",
"color": "CCCCCC",
"description": "種別: 重複"
},
{
"name": "wontfix",
"color": "CCCCCC",
"description": "種別: 対応しない"
},
{
"name": "icebox",
"color": "BDDEEC",
"description": "種別: 優先度低"
},
{
"name": "release",
"color": "003B46",
"description": "種別: リリース"
},
{
"name": "major",
"color": "07575B",
"description": "バージョニング: メジャーアップデート"
},
{
"name": "minor",
"color": "C4DFE6",
"description": "バージョニング: マイナーアップデート"
},
{
"name": "dependencies",
"color": "5319E7",
"description": "種別: セキュリティアップデート"
},
{
"name": "docker",
"color": "E6D72A",
"description": "依存関係: docker compose build が必要な変更"
},
{
"name": "npm",
"color": "E6D72A",
"description": "依存関係: npm install が必要な変更"
},
{
"name": "composer",
"color": "E6D72A",
"description": "依存関係: composer install が必要な変更"
},
{
"name": "migrate",
"color": "E6D72A",
"description": "依存関係: php artisan migrate が必要な変更"
},
{
"name": "not-reviewed",
"color": "F9C1CF",
"description": "未レビュー"
}
]
必要に応じて、ラベルの定義を追加・削除してください。
.github/workflows/sync-labels.yaml
.github/workflows/sync-labels.yaml
name: Sync Labels
on:
workflow_dispatch:
push:
branches: [main, develop]
jobs:
sync-labels:
permissions:
issues: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
- name: Install dependencies
run: yarn add -D @azu/github-label-setup
- name: Run github-label-setup
run: yarn github-label-setup --token ${{ secrets.GITHUB_TOKEN }} --labels .github/labels.json
@azu/github-label-setup はnpmパッケージなので、Node.jsをセットアップしています。
.github/labels.json
を参照したいので、actions/checkoutも利用しています。
${{ secrets.GITHUB_TOKEN }}
は自動トークン認証で認証が必要なGitHub APIを叩く時に渡します。
結果
main
or develop
ブランチにラベルを一気に作成してくれます。
workflow_dispatch
も定義しているので任意のブランチ、タイミングで実行してもokです。
個人的にとても嬉しかったです!
補足
- ラベルを追加・削除したい場合はファイルを更新する
- 手動で追加した場合、ワークフローが実行されたタイミングで削除される
業務改善度: ★☆☆☆☆
星1つです。
新しくリポジトリを作る時だけまとめてラベルを作れるので、5分〜10分くらい時間が短縮できるでしょうか...
ラベルをファイルで管理できるようになったので、次回は応用編です。
続編にご期待ください。
参考