Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub Actionsと"仲良くなる"ための練習方法
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuta Matsumura
March 20, 2023
Technology
7.1k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub Actionsと"仲良くなる"ための練習方法
CI/CD Conference 2023 #CICD2023
https://event.cloudnativedays.jp/cicd2023/talks/1766
Yuta Matsumura
March 20, 2023
More Decks by Yuta Matsumura
See All by Yuta Matsumura
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
96
github/awesome-copilotのPHPのエージェントスキルを読む
tsubakimoto_s
0
75
エージェントスキルを作って自分のインプットに役立てよう v2
tsubakimoto_s
0
51
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
800
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
4
2.5k
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
450
使って学ぼう MCP (と GitHub Codespaces)
tsubakimoto_s
1
340
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
1
430
AspireとGitHub Modelsで作るお手軽AIアプリ
tsubakimoto_s
0
120
Other Decks in Technology
See All in Technology
reFACToring
moznion
0
200
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
130
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
430
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
5
1.2k
穢れた技術選定について
watany
19
6.2k
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.5k
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
170
_NIKKEI_Tech_Talk__勉強会は熱量では続かない___17回続いた輪読会の設計術.pdf
_awache
1
100
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
140
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
1
140
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
480
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
0
120
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
250
The Limits of Empathy - UXLibs8
cassininazir
1
530
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
What's in a price? How to price your products and services
michaelherold
247
13k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
57k
Writing Fast Ruby
sferik
630
63k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Transcript
#cicd2023 GitHub Actionsと"仲良くなる"ための練習方法 2023/03/20 CI/CD Conference 2023 Yuta Matsumura ©
2023 Yuta Matsumura.
#cicd2023 松村 優大 (Yuta Matsumura) Currently working for © 2023
Yuta Matsumura. Chief Technical Architect C#, PHP, Azure, GitHub が好き Microsoft MVP (Developer Technologies) #fukuten #devblogradio の中の人 @tsubakimoto_s
#cicd2023 これからお話しすること 1. ソフトウェア開発ライフサイクルにおける定型作業 2. GitHub Actions の使い方 3. GitHub
Actions の学び方の課題 4. nektos/act でのローカル練習環境 5. 練習環境のアップグレード © 2023 Yuta Matsumura.
#cicd2023 こういう方にオススメです • GitHub Actions を勉強中・これから勉強する方 • GitHub Actions を使って
CI/CD の構築をしている方 • GitHub Actions の検証に四苦八苦している方 • GitHub Actions と仲良くなりたい方 © 2023 Yuta Matsumura.
#cicd2023 ソフトウェア開発ライフサイクルに おける定型作業 © 2023 Yuta Matsumura.
#cicd2023 ソフトウェア開発ライフサイクル Software Development Life Cycle Plan Develop Deliver Operate
https://learn.microsoft.com/en-us/devops/what-is-devops SDLC © 2023 Yuta Matsumura.
#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.
#cicd2023 SDLC における定型作業 (ワークフロー) 定型作業を手作業ではなく自動化を行うことで、 開発者が開発に割く時間を少しでも増やすようにしましょう。 © 2023 Yuta Matsumura.
ビジネスワークフロー クラウドワークフロー SDLC ワークフロー GitHub Actions Power Automate Azure Logic Apps
#cicd2023 © 2023 Yuta Matsumura. Azure DevOps (Azure Pipelines) GitHub
(GitHub Actions)
#cicd2023 GitHub Actions の使い方 © 2023 Yuta Matsumura.
#cicd2023 自動化されたワークフロー • YAML ファイル形式 • GitHub と完全統合 • GitHub
上のイベントをトリガー • ライブログと視覚化された実行結果 • 2種のランナー (GitHub-hosted, Self-hosted) • シークレット構成可能 © 2023 Yuta Matsumura. GitHub Actions
#cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント ワークフロー
ジョブ1 ジョブ2 ステップ1 アクション ステップ2 アクション ステップ1 アクション ランナー1 アクション実行 実行ログ ランナー2 アクション実行 実行ログ
#cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント •
手動実行 • リポジトリに関する操作 • 各機能に関する操作 (Issue, Pull Request, Projects, etc) • スケジュール
#cicd2023 GitHub Actions の構成 © 2023 Yuta Matsumura. イベント ワークフロー
ジョブ1 ジョブ2 ステップ1 アクション ステップ2 アクション ステップ1 アクション ランナー1 アクション実行 実行ログ ランナー2 アクション実行 実行ログ
#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 ローカルやクラウドに構築
#cicd2023 #cicd2023 © 2023 Yuta Matsumura. イベント ジョブ ランナー ステップ
アクション
#cicd2023 GitHub Actions は CI/CD だけではない CI/CD は GitHub Actions
で実現できる作業のひとつです。 GitHub という開発環境を最大限活用するために、 ちょっとしたことからワークフローにしてみましょう。 © 2023 Yuta Matsumura.
#cicd2023 練習してみよう © 2023 Yuta Matsumura.
#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
#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
#cicd2023 Public Repo x GitHub-hosted runner x Linux =👍 ©
2023 Yuta Matsumura.
#cicd2023 © 2023 Yuta Matsumura.
#cicd2023 とはいえ毎回 サイトで試すのツライ © 2023 Yuta Matsumura.
#cicd2023 GitHub Actions の学び方の課題 © 2023 Yuta Matsumura.
#cicd2023 GitHub Actions の学び方の課題 • コミットや UI 操作をしないと動作確認できない • ワークフロー内部のデータが分かりにくい
• YAML が複数あるときのトリガー制御が大変 • ブラウザで作業することが大変 © 2023 Yuta Matsumura. イベント ワークフロー アクション
#cicd2023 2022年12月… © 2023 Yuta Matsumura.
#cicd2023 © 2023 Yuta Matsumura.
#cicd2023 つらさをぶつけました Q. Actions を試すのは (前述のように)大変だ A. nektos/act という オープンソースがあるよ
© 2023 Yuta Matsumura.
#cicd2023 nektos/act でのローカル練習環境 © 2023 Yuta Matsumura.
#cicd2023 nektos/act とは GitHub Actions のローカル実行ツールです。 https://github.com/nektos/act リポジトリに変更を加えることなく、ワークフローの実行を 行うことができます。 ※
Docker (Desktop or Engine) が必要です。 © 2023 Yuta Matsumura.
#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
#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.
#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.
#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.
#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.
#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
#cicd2023 © 2023 Yuta Matsumura.
#cicd2023 nektos/act で練習できる範囲 © 2023 Yuta Matsumura. リポジトリ内で完結 するなら不都合ない コンテナー
リポジトリに関する部分
#cicd2023 • GitHub Actions での実環境 • nektos/act での検証環境 1つの YAML
内で環境を区別 するには、コンテキスト内の actor の値で判別可能です。 ▼ コンテキストを見るためのダンプ ▼ コンテキストの内容 { actor: nektos/act, ... } ▼ ワークフローの条件式 nektos/act で実行していることを識別する © 2023 Yuta Matsumura.
#cicd2023 注意点 • github.com にまつわるイベントは試すことができません ▶ Issue, Pull Request, Discussions,
Projects, etc • permissions を用いたアクションは制限があります ▶ Actions からクラウドリソースへの OIDC など • キャッシュはサポートされていません CI 部分に限った練習はとてもやりやすい印象 © 2023 Yuta Matsumura.
#cicd2023 Dev Containers で nektos/act を使う 練習環境をサクっと作りましょう © 2023 Yuta
Matsumura.
#cicd2023 Dev Containers 開発環境としてのコンテナーを準備することができます。 Visual Studio Code + 拡張機能パック +
devcontainer.json ▶ nektos/act の Dev Containers 定義を作成します © 2023 Yuta Matsumura. https://code.visualstudio.com/docs/devcontainers/containers
#cicd2023 #cicd2023 © 2023 Yuta Matsumura.
#cicd2023 #cicd2023 © 2023 Yuta Matsumura. https://github.com/tsubakimoto/cicd-conference-sample/blob/main/.devcontainer/devcontainer.json VS Code で開く
Reopen in Container Dev Containers 起動 .devcontainer/devcontainer.json
#cicd2023 © 2023 Yuta Matsumura.
#cicd2023 GitHub Codespaces © 2023 Yuta Matsumura.
#cicd2023 GitHub Codespaces GitHub 上にホストされる仮想マシンを使用して、 オンライン上に開発環境を構築することができます。 devcontainer.json をリポジトリに保管している場合、 devcontainer.json の構成がセットアップされます。
© 2023 Yuta Matsumura.
#cicd2023 GitHub Codespaces の無料枠 © 2023 Yuta Matsumura. https://docs.github.com/ja/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces
#cicd2023 GitHub Codespaces のマシン種別と価格 © 2023 Yuta Matsumura. https://docs.github.com/ja/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces
#cicd2023 GitHub Codespaces のセキュリティ • 分離された仮想マシンや仮想ネットワーク • Codespace にアクセスできるのは作成者のみ •
外部からのアクセス不可 • ポートフォワーディング機能 • シークレット管理 © 2023 Yuta Matsumura. https://docs.github.com/ja/codespaces/codespaces-reference/security-in-github-codespaces
#cicd2023 Codespace のパーソナライズ © 2023 Yuta Matsumura. https://docs.github.com/ja/codespaces/customizing-your-codespace/personalizing-github-codespaces-for-your-account VSCode 設定の同期
dotfiles リポジトリの反映
#cicd2023 © 2023 Yuta Matsumura. ブラウザだけで Actions の練習ができる!
#cicd2023 まとめ • GitHub Actions の練習にほとんどお金はかかりません • ローカル環境を整えることも大事です • Dev
Containers や GitHub Codespaces を使うことで 環境を問わず練習を行うことができます • ワークフローを増やし、開発ライフサイクルを より良いものにしましょう © 2023 Yuta Matsumura.
#cicd2023 ご清聴ありがとうございました © 2023 Yuta Matsumura.