Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Projectsを自動化するGitHub CLIテクニック / Automate...

tasshi
July 26, 2024

GitHub Projectsを自動化するGitHub CLIテクニック / Automate GitHub Projects with GitHub CLI

Sansan vs サイボウズ 開発生産性Tips夏祭り のLT資料です。
イベント情報はこちら↓
https://cybozu.connpass.com/event/322718/

配信アーカイブ↓
https://www.youtube.com/watch?v=v_tSPrC3-_0&t=3230

tasshi

July 26, 2024
Tweet

More Decks by tasshi

Other Decks in Programming

Transcript

  1. #sansan_vs_cybozu GitHub Projectsを⾃動化する GitHub CLIテクニック S a n s a

    n v s サ イ ボ ウ ズ 開 発 ⽣ 産 性 T i p s 夏 祭 り ( 2 0 2 4 - 0 7 - 2 6 ) @ t a s s h i _ m e
  2. #sansan_vs_cybozu ⾃ ⼰ 紹 介 • ⽥代雅治 (tasshi) • 所

    属 • k i n t o n e 拡 張 基 盤 チ ー ム 🧩 • E M / P O • 出 ⾝ • ⿅ 児 島 → 福 岡 • 趣 味 • プ ロ グ ラ ミ ン グ • サ イ ク リ ン グ • ゲ ー ム @ t a s s h i _ m e
  3. #sansan_vs_cybozu • ki n to n eの拡 張 機 能

    ( プ ラ グイ ン ・ 連 携 サ ー ビス ) 開発 の 開 発 基 盤を 開発 ・保守 するチ ーム • APIなど の 整備 • S DK /CLIなど の OSS の 提 供 • k i n t o n e / j s - s d k • k i n t o n e J a va C l i e n t • c l i - k i n t o n e 🧩 kintone拡張基盤チーム 🧩
  4. #sansan_vs_cybozu • G i tH u b公式 の プロ ジェ

    ク ト管 理ツー ル • 複 数 の Repo s i to r y を 横断 的 に 管 理で き る • 柔 軟 な ビュ ー設 定 • テ ー ブ ル / ボ ー ド / ロ ー ド マ ッ プ • カ ス タ ムフ ィー ルド • テ キ ス ト / 数 値 / ⽇ 付 / D r o p d o w n / 繰 り 返 し な ど GitHub Projects
  5. #sansan_vs_cybozu 再利⽤しやすいように パッケージングする P r o j e c t

    s の ベ ス ト プ ラ ク テ ィ ス - G i t H u b D o c s
  6. #sansan_vs_cybozu • 基 本 的 な 操 作 が 揃

    っ て い る • C l o s e し た ら D o n e に 移 動 • R e o p e n さ れ た ら I c e b o x に 移 動 • A p p r o v e さ れ た ら Te s t i n g に 移 動 な ど • よ く 使 う の は 以 下 の 3 つ • 「 I t e m a d d e d t o p r o j e c t 」 • 「 A u t o - a d d t o p r o j e c t 」 • こ れ だ け 複 製 で き る • 「 A u t o - a r c h i v e i t e m s 」 組み込みの⾃動化 (Workflows)
  7. #sansan_vs_cybozu • A P I を 使 う プ ロ

    グ ラ ム を 書 い て A c t i o n s で 実 ⾏ • P r o j e c t s の 操 作 は G i t H u b A P I v 4 ( G r a p h Q L ) • v 3 ( R E S T A P I ) で は で き な い • G i t H u b A p p o r P AT で 認 証 • p r o j e c t ス コ ー プ の 権 限 が 必 要 • G i t H u b C L I を 使 う と 簡 単 • g h a p i g r a p h q l コ マ ン ド API/Actionsを使⽤した⾃動化
  8. #sansan_vs_cybozu • 開 発 プ ロセ ス • 着 ⼿

    し た P B I は 現 在 の ス プ リ ン ト を ⼊ ⼒ す る • ス プ リ ン ト を 跨 い だ P B I は ス プ リ ン ト を 更 新 す る • Ic e b o x / Re a d y に 戻 っ た P B I は ス プ リ ン ト を ク リ ア す る • み ん な めち ゃく ちゃ忘 れる( ⾃分 含めて ) => 開 発中の P B Iに ⾃動 で ス プ リン ト を ⼊⼒ した い ︕ 🧩: スプリントを⾃動更新する
  9. #sansan_vs_cybozu • ⻑ す ぎ る シ ェ ル ス

    ク リ プ ト • ⼤ コ ピ ペ 運 ⽤ 時 代 • ⼤ 元 で コ ー ド 修 正 し て も 改 善 し て も コ ピ ー 先 が 追 従 し な い • チ ー ム ご と の 独 ⾃ の 改 修 が ⼊ っ て い て 追 従 で き な い • コ ピ ペ で 動 か し 始 め た け ど シ ェ ル ス ク リ プ ト よ く 分 か ら な い • 崩 壊 • ⾃ 動 化 の 保 守 コ ス ト ⾼ く な い ︖ と い う 意 ⾒ が 出 て ⼿ 作 業 に 戻 る • 後 か ら ⼊ っ た メ ン バ ー が ⾃ 動 化 し 始 め る ( → 最 初 に 戻 る ) 問題点: 他チームに展開しづらい
  10. #sansan_vs_cybozu • G i tH u b CLIに独 ⾃ のコ

    マン ド を追 加でき る • ダ ッ シ ュ ボ ー ド と か 、 M a r k d o w n ビ ュ ー ワ ー と か • 「 gh - 」で 始 まる リポ ジ トリ 名で公 開 • 好 き な 開発 ⾔語 で開発 できる • 実 ⾏ フ ァ イ ル が ⽣ 成 で き れ ば な ん で も O K • G o だ と 公 式 の ラ イ ブ ラ リ が 利 ⽤ で き る GitHub CLI 拡張機能 (gh extensions)
  11. #sansan_vs_cybozu • G i t H u b C L

    I の 引 数 が 画 ⾯ 上 の 名 前 で は な く I D の 場 合 が 割 と あ る • カ ス タ ム フ ィ ー ル ド を 編 集 す る に は フ ィ ー ル ド I D / イ テ レ ー シ ョ ン I D が 必 要 • フ ィ ー ル ド I D / イ テ レ ー シ ョ ン I D は A P I で 取 得 す る が A P I 実 ⾏ に は P r o j e c t I D ( ≠ P r o j e c t 番 号 ) も 必 要 • こ の 連 鎖 的 な 情 報 収 集 で コ ー ド 量 が 増 え て い る = > 「 ス プ リ ン ト 」 フ ィ ー ル ド を 「 現 在 の ス プ リ ン ト 」 に 設 定 み た い な 直 感 的 な 操 作 が や り た い そもそもなぜスクリプトが⻑いのか
  12. #sansan_vs_cybozu gh-iteration G i t H u b P r

    o j e c t s の 繰 り 返 し フ ィ ー ル ド を 簡 単 に 操 作 す る た め の 拡 張 機 能 h t t p s : / / g i t h u b . c o m / t a s s h i - m e / g h - i t e r a t i o n
  13. #sansan_vs_cybozu コマンド 機能 field-list 繰り返しフィールドの一覧を表示 field-view 繰り返しフィールドの設定を閲覧 item-edit プロジェクトアイテムを更新 item-view

    プロジェクトアイテムを閲覧 items-edit 複数のプロジェクトアイテムを一括更新 list 繰り返しフィールドのイテレーション一覧 を表示 gh-iteration: コマンド⼀覧 標 準 の g h p r o j e c t コ マ ン ド に ⽐ べ て 繰 り 返 し フ ィ ー ル ド を 扱 い や す く し た
  14. #sansan_vs_cybozu • 複 数 の アイ テム のイテ レーシ ョン

    を⼀括 更新 • 対 象 ア イテ ムは クエリ で絞り 込む • 例 : ( I t e m . Ty p e = = “ I SS U E ” ) & & I t e m . Is A r c h i v e d • イ テ レ ーシ ョン は、現 在 ( - - c u rren t) /ク リ ア( - - c l ea r) /名前 ( - - i tera ti o n <n a me>) か ら指 定可能 gh-iteration: items-edit コマンド
  15. #sansan_vs_cybozu ex pr- l a n g /ex pr 構

    造 体 に 対 し て 、 柔 軟 な ク エ リ を 適 ⽤ す る こ と が で き る Z e n n で 紹 介 さ れ て い る の を ⾒ て 採 ⽤ し ま し た • クエリの例 • Item.Type == “ISSUE” • Item.Stor yPoint > 3 && Item.Stor yPoint < 7 • Item.Repositor y endsWith “demo”
  16. #sansan_vs_cybozu 包 括 的 な コ マ ン ド を

    追 加 し て 置 き 換 え て い く f i e l d - v i e w を 追 加 i t e m - e d i t を 追 加 i t e m s - e d i t を 追 加
  17. #sansan_vs_cybozu • GitHub CLI+シェルスクリプトから移⾏しやすい • ミ ニマ ムだ とシ ェ

    ルス クリプ トか ら切り 出し て 引 数を 取れ るよ う にし ただけ でも リリー スで きる • 認証周りがghに依存できて楽 • expr-lang /exprで簡単にクエリ対応できた gh extensions: 良かったこと
  18. #sansan_vs_cybozu • Ty p e S c r i p

    t で 仕 事 し て る か ら G o を 普 段 書 い て な い • G i t H u b A c t i o n s と 開 発 体 験 が ⼀ 貫 し て な い 感 じ が し た • コ ア 部 分 は ラ イ ブ ラ リ 化 し て g h e x t e n s i o n s と A c t i o n s の 両 ⽅ に 簡 単 に 配 布 し た い • G o で 書 く と A c t i o n s で a c t i o n s / t o o l k i t が 使 え な い • J a v a S c r i p t で 書 く と g h e x t e n s i o n s で g o - g h が 使 え な い • 実 ⾏ フ ァ イ ル の フ ァ イ ル サ イ ズ も ⼤ き く な り が ち gh extensions: 気になったこと