kakakakakku blog

Weekly Tech Blog: Keep on Learning!

GitHub Actions の実践的なノウハウが凝縮されている素晴らしい一冊「GitHub CI/CD 実践ガイド」を読んだ

GitHub Actions の実践的なノウハウが凝縮されている一冊「GitHub CI/CD 実践ガイド」を読んだ📕

本書ではソフトウェア開発ライフサイクルから GitHub Actions 基礎トピック・GitHub Actions 実践トピックが紹介されていて,さらに GitHub Actions を活用して実現するリリース自動化・パッケージ管理・セキュリティのシフトレフトまでもカバーされている❗️素晴らしい👏 GitHub Actions をなんとなーく使っていたり,いつも既存のワークフローをコピーしていたりする人は必読かなと \( 'ω')/

また著者の経験に基づくベストプラクティス(こうすると良いよ〜的な)が散りばめられているのも現場目線で読めて良かった❗️

もちろん機能面に関しては GitHub Actions のドキュメントを読めば書いてあることも多いけど,すべてを読むのは大変だし,微妙に読みにくかったりもするし,書籍として体系的にまとまっていることはとても価値があると思う💡

docs.github.com

目次 🧩

基礎編

  • 第1章: ソフトウェア開発と GitHub
  • 第2章: GitHub Actions の基礎概念
  • 第3章: ワークフロー構文の基礎
  • 第4章: 継続的インテグレーションの実践
  • 第5章: 運用しやすいワークフローの設計
  • 第6章: アクションによるモジュール化

実践編

  • 第7章: クリーンなリポジトリの維持
  • 第8章: Dependabot による依存関係バージョンアップ
  • 第9章: GitHub Releases によるリリース自動化
  • 第10章: GitHub Packages によるパッケージ管理
  • 第11章: OpenID Connect によるセキュアなクラウド連携
  • 第12章: コンテナオーケストレーションのデプロイメント
  • 第13章: アクションのオープンソース化

応用編

  • 第14章: GitHub Actions の高度な使い方
  • 第15章: GitHub Actions のセキュリティ
  • 第16章: セキュリティのシフトレフト
  • 第17章: GitHub Apps トークンによるクロスリポジトリアクセス
  • 第18章: 継続的デリバリーの実践

あくまで個人的な感想だけど「第6章 (composite action)」「第14章 (reusable workflow)」は内容的に続いていても良いかな〜とは思った.

gihyo.jp

新たな発見もあった 🧩

僕自身は比較的 GitHub Actions の経験があって,復習も兼ねてザーッと読んだけど,それでも「知らなかったぞ〜💡」という情報も載っていて新たな発見もあった❗️具体的には以下など.

  • 中間環境変数テクニック(第3章)
  • Secrets のログマスクは回避できてしまう(第3章)
  • ログをグループ化して可読性を高める(第5章)
  • CODEOWNERS ファイル(第7章)
  • スクリプトインジェクション(第15章)
  • Gitleaks(第16章)

NAMEkakakakakku と設定して,Secrets のログマスクを回避する記法を試してみた.なるほどなぁー😅

jobs:
  secrets:
    runs-on: ubuntu-latest
    env:
      NAME: ${{ secrets.NAME }}
    steps:
      - run: echo ${NAME:0:1} ${NAME#?}

::group::{title} という記法でログをグループ化する Tips も知らなくて,実際に試してみた👌仕事でちょうど使えそうな部分があったからさっそく導入してみたりもした❗️

docs.github.com

jobs:
  grouping-log-lines:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - name: Setup packages
        run: |
          echo '::group::pip install logs'
          pip install -r requirements.txt
          echo '::endgroup::'

GitHub Apps 解説

第17章「GitHub Apps トークンによるクロスリポジトリアクセス」に載っているクレデンシャルと GitHub Apps の解説は貴重だった❗️曖昧だった理解を整理できた.さらに classic Personal Access Tokens (PAT) は「最悪の選択肢」と書いてあって「それな〜😱」という気持ちに.Fine-grained Personal Access Tokens (PAT) に有効期限があるのは良いとしても,今もまだ Beta って書いてあって使いたくない気持ちがある💨

docs.github.com

その他読書メモ

第2章に workflow_dispatch の紹介が載っていて良かった.意外と知られてなくて無理矢理コミットしてトリガーしてる人をよく見る.あと本書には載ってなかったけど,workflow_dispatch はワークフローファイルがデフォルトブランチに存在してる前提で実行できるから,最初プルリクエストを送った段階だと試せなくてハマるという経験があったりする📝

docs.github.com

第2章の最後に「課金モデル」の解説が含まれているのも良かった💰同じく結構知られてない気がする(個人的な観測範囲内では).

docs.github.com

第4章で紹介されてた GitHub Actions の「concurrency 設定」は知っておくと便利❗️前にブログを書いた.

kakakakakku.hatenablog.com

もしかしたら「act」の紹介もあるかな〜と思って読み進めていたけど,本書には出ていなかったはず👀

github.com

kakakakakku.hatenablog.com

まとめ

GitHub Actions を使ってるチームは多いと思うけど,もっと GitHub Actions を知ることでさらに便利になって活用が進むと思う.本書には GitHub Actions の実践的なノウハウが凝縮されていて素晴らしい一冊だった📕 おすすめ \( 'ω')/

著者のブログ記事・本書のコードリポジトリもリンクしておくー🔗

nekopunch.hatenablog.com

github.com

ポスト