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

GitHub Actionsと"仲良くなる"ための練習方法

GitHub Actionsと"仲良くなる"ための練習方法

Yuta Matsumura

March 20, 2023
Tweet

More Decks by Yuta Matsumura

Other Decks in Technology

Transcript

  1. #cicd2023 松村 優大 (Yuta Matsumura) Currently working for © 2023

    Yuta Matsumura. Chief Technical Architect C#, PHP, Azure, GitHub が好き Microsoft MVP (Developer Technologies) #fukuten #devblogradio の中の人 @tsubakimoto_s
  2. #cicd2023 これからお話しすること 1. ソフトウェア開発ライフサイクルにおける定型作業 2. GitHub Actions の使い方 3. GitHub

    Actions の学び方の課題 4. nektos/act でのローカル練習環境 5. 練習環境のアップグレード © 2023 Yuta Matsumura.
  3. #cicd2023 こういう方にオススメです • GitHub Actions を勉強中・これから勉強する方 • GitHub Actions を使って

    CI/CD の構築をしている方 • GitHub Actions の検証に四苦八苦している方 • GitHub Actions と仲良くなりたい方 © 2023 Yuta Matsumura.
  4. #cicd2023 ソフトウェア開発ライフサイクル Software Development Life Cycle Plan Develop Deliver Operate

    https://learn.microsoft.com/en-us/devops/what-is-devops SDLC © 2023 Yuta Matsumura.
  5. #cicd2023 ソフトウェア開発ライフサイクル Software Development Life Cycle Plan Code Build Test

    Release Deploy Operate Monitor https://learn.microsoft.com/en-us/devops/what-is-devops SDLC © 2023 Yuta Matsumura.
  6. #cicd2023 自動化されたワークフロー • YAML ファイル形式 • GitHub と完全統合 • GitHub

    上のイベントをトリガー • ライブログと視覚化された実行結果 • 2種のランナー (GitHub-hosted, Self-hosted) • シークレット構成可能 © 2023 Yuta Matsumura. GitHub Actions
  7. #cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント ワークフロー

    ジョブ1 ジョブ2 ステップ1 アクション ステップ2 アクション ステップ1 アクション ランナー1 アクション実行 実行ログ ランナー2 アクション実行 実行ログ
  8. #cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント •

    手動実行 • リポジトリに関する操作 • 各機能に関する操作 (Issue, Pull Request, Projects, etc) • スケジュール
  9. #cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント ワークフロー

    ジョブ1 ジョブ2 ステップ1 アクション ステップ2 アクション ステップ1 アクション ランナー1 アクション実行 実行ログ ランナー2 アクション実行 実行ログ
  10. #cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. ランナー1 アクション実行

    実行ログ ランナー2 アクション実行 実行ログ GitHub-hosted runner OS: Ubuntu, Windows, macOS https://docs.github.com/ja/actions/using-github-hosted-runners/about-github-hosted-runners https://docs.github.com/ja/actions/hosting-your-own-runners/about-self-hosted-runners Self-hosted runner ローカルやクラウドに構築
  11. #cicd2023 GitHub Actions は CI/CD だけではない CI/CD は GitHub Actions

    で実現できる作業のひとつです。 GitHub という開発環境を最大限活用するために、 ちょっとしたことからワークフローにしてみましょう。 © 2023 Yuta Matsumura.
  12. #cicd2023 GitHub Actions の料金 © 2023 Yuta Matsumura. https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions •

    パブリックリポジトリ:無料 • プライベートリポジトリ:無料枠あり 製品 ストレージ 分 (月間) GitHub Free 500MB 2,000 GitHub Pro 1GB 3,000 GitHub Free for Organization 500MB 2,000 GitHub Team 2GB 3,000 GitHub Enterprise Cloud 50GB 50,000
  13. #cicd2023 GitHub Actions の料金 (GitHub-hosted runner) © 2023 Yuta Matsumura.

    https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions OS ごとに時間の消費速度が異なります。 x1 x2 x10 Linux Windows macOS
  14. #cicd2023 GitHub Actions の学び方の課題 • コミットや UI 操作をしないと動作確認できない • ワークフロー内部のデータが分かりにくい

    • YAML が複数あるときのトリガー制御が大変 • ブラウザで作業することが大変 © 2023 Yuta Matsumura. イベント ワークフロー アクション
  15. #cicd2023 nektos/act 用のコンテナーイメージ ランナーとして使用するコンテナーイメージが用意されてい ます。サイズは3種類あります。(Large, Medium, Micro) ※ 非サポート:Windows, macOS

    © 2023 Yuta Matsumura. 種類 イメージ サイズ Ubuntu ver Large catthehacker/ubuntu:full-latest +20GB 20.04, 18.04 Medium catthehacker/ubuntu:act-latest ~500MB 22.04, 20.04, 18.04 Micro node:16-buster-slim < 200MB 22.04, 20.04, 18.04 https://github.com/nektos/act#runners
  16. #cicd2023 .github/workflows にあるワークフローを表示します $ act --list Stage Job ID Job

    name Workflow name Workflow file Events 0 greet Greet Hello world hello-world.yml push ワークフローの一覧表示 © 2023 Yuta Matsumura.
  17. #cicd2023 特定イベントのワークフローを表示します $ act push --list Stage Job ID Job

    name Workflow name Workflow file Events 0 greet Greet Hello world hello-world.yml push ワークフローの一覧表示 © 2023 Yuta Matsumura.
  18. #cicd2023 該当するジョブを持つワークフローを表示します $ act --job greet --list Stage Job ID

    Job name Workflow name Workflow file Events 0 greet Greet Hello world hello-world.yml push ワークフローの一覧表示 © 2023 Yuta Matsumura.
  19. #cicd2023 指定したジョブを実行します。 $ act # イベント `push` を実行 $ act

    pull_request # イベント `pull_request` を実行 $ act --job greet # `greet` ジョブを実行 $ act --input name=yuta # 入力値を指定して実行 $ act --eventpath payload.json # イベント内容を指定して実行 $ act --secret name=yuta # シークレットを指定して実行 $ act --secret-file .secrets # シークレットをファイル指定して実行 ジョブの実行 © 2023 Yuta Matsumura.
  20. #cicd2023 --artifact-server-path で保管先を指定します ※ actions/upload-artifact, actions/download-artifact など $ act --artifact-server-path

    /tmp/artifacts アーティファクトを使用する © 2023 Yuta Matsumura. https://qiita.com/nagayaoh/items/d5cff83929452b790164
  21. #cicd2023 • GitHub Actions での実環境 • nektos/act での検証環境 1つの YAML

    内で環境を区別 するには、コンテキスト内の actor の値で判別可能です。 ▼ コンテキストを見るためのダンプ ▼ コンテキストの内容 { actor: nektos/act, ... } ▼ ワークフローの条件式 nektos/act で実行していることを識別する © 2023 Yuta Matsumura.
  22. #cicd2023 注意点 • github.com にまつわるイベントは試すことができません ▶ Issue, Pull Request, Discussions,

    Projects, etc • permissions を用いたアクションは制限があります ▶ Actions からクラウドリソースへの OIDC など • キャッシュはサポートされていません CI 部分に限った練習はとてもやりやすい印象 © 2023 Yuta Matsumura.
  23. #cicd2023 Dev Containers 開発環境としてのコンテナーを準備することができます。 Visual Studio Code + 拡張機能パック +

    devcontainer.json ▶ nektos/act の Dev Containers 定義を作成します © 2023 Yuta Matsumura. https://code.visualstudio.com/docs/devcontainers/containers
  24. #cicd2023 GitHub Codespaces のセキュリティ • 分離された仮想マシンや仮想ネットワーク • Codespace にアクセスできるのは作成者のみ •

    外部からのアクセス不可 • ポートフォワーディング機能 • シークレット管理 © 2023 Yuta Matsumura. https://docs.github.com/ja/codespaces/codespaces-reference/security-in-github-codespaces
  25. #cicd2023 まとめ • GitHub Actions の練習にほとんどお金はかかりません • ローカル環境を整えることも大事です • Dev

    Containers や GitHub Codespaces を使うことで 環境を問わず練習を行うことができます • ワークフローを増やし、開発ライフサイクルを より良いものにしましょう © 2023 Yuta Matsumura.