プロジェクト管理
何使ってる?
- Jira
- Backlog
- Redmine
- Notion
普段GitHubで開発しているのでGitHub Projectsを使おう
お品書き
- GitHub Projectsのいいところ
- Issue templateを活用する
- GitHub Projectsに自動で追加する
GitHub Projectsのいいところ
- GitHubだけで完結する
- 無料
- Pull request や Issue の番号でリンク
- 複数リポジトリをまとめられる
- iOS/Androidなどまとめて管理
- Automated, GitHub Actionsで自動化
Issue templateを活用する
- リポジトリのSettingsから[Features]>[Issues]>[Set up templates]から作成できる
- 新しいIssue開く時にテンプレートから選べる
- Formもyamlフォーマットで作成可能
- 詳細はusing-templates-to-encourage-useful-issues-and-pull-requests
IssueをGitHub Actionsで登録する
- 1機能の実装が分かれてる
- Data/Domain/Presentation...
- 親子タスクの登録
- Backlog/Feature...
Issue templateを使ってIssueを登録するAction
- パラメータの受け渡し
- {{ mustache }}記法で埋め込み
- Moment.jsによるDateフォーマット
make_issues.yml
name: make issues
on:
workflow_dispatch:
inputs:
feature:
description: 'feature name'
required: true
jobs:
backlog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FEATURE_DATA: ${{ github.event.inputs.feature }} # パラメータの受け渡し
with:
filename: .github/ISSUE_TEMPLATE/backlog.md # テンプレートファイルの指定
jobs:
backlog:
runs-on: ubuntu-latest
+ outputs:
+ number: ${{ steps.create-backlog.outputs.number }} # 次jobへ引き継ぎ
steps:
- uses: actions/checkout@v3
- uses: JasonEtco/create-an-issue@v2
+ id: create-backlog
env:
GITHUB_TOKEN: ${{ secrets.ORGANIZATION_GITHUB_TOKEN }}
+ features:
+ runs-on: ubuntu-latest
+ needs: backlog
+ strategy:
+ matrix:
+ template: [data, domain, presentation] # strategyで複数Issueへの展開
+ steps:
+ - uses: actions/checkout@v3
+ - uses: JasonEtco/create-an-issue@v2
+ env:
+ GITHUB_TOKEN: ${{ secrets.ORGANIZATION_GITHUB_TOKEN }}
+ FEATURE_DATA: ${{ github.event.inputs.feature }}
+ BACKLOG_DATA: ${{ needs.backlog.outputs.number }} # 親Issueへのリンク
+ with:
+ filename: .github/ISSUE_TEMPLATE/${{ matrix.template }}.md
GitHub Projectsに自動で追加する
IssueやPull Requestを作った時やlabelをつけた時にGitHub Projectsに追加するAction
name: Add To GitHub projects
on:
issues:
types:
- opened # issueを登録した時
jobs:
add-to-project:
name: Add issue to project
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v0.3.0
with:
# https://github.com/orgs|users/<ownerName>/projects/<projectNumber>
project-url: https://github.com/orgs/yumemi/projects/1
# repo and projectのtokenが必要
github-token: ${{ secrets.ORGANIZATION_GITHUB_TOKEN }}
# 追加する条件のラベル
labeled: backlog, enhancement
label-operator: OR