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
7k
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
github/awesome-copilotのPHPのエージェントスキルを読む
tsubakimoto_s
0
66
エージェントスキルを作って自分のインプットに役立てよう v2
tsubakimoto_s
0
46
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
760
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
4
2.5k
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
440
使って学ぼう MCP (と GitHub Codespaces)
tsubakimoto_s
1
320
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
1
410
AspireとGitHub Modelsで作るお手軽AIアプリ
tsubakimoto_s
0
110
Memories of GitHub Universe & San Francisco
tsubakimoto_s
0
88
Other Decks in Technology
See All in Technology
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
180
Zenoh on Zephyr on LiteX
takasehideki
2
160
Terraform 101 (初心者向け) 資料
shuadachi
0
140
どうして今サーバーサイドKotlinを選択したのか
nealle
0
160
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
120
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
250
組織における AI-DLC 実践
askul
0
240
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
140
事業会社は今こそSWEを高給で雇ってWebシステムを内製しよう
masaokb
0
110
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
110
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
210
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
720
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Marketing to machines
jonoalderson
1
5.5k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
160
The Pragmatic Product Professional
lauravandoore
37
7.3k
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.