Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitHub Actionsと"仲良くなる"ための練習方法
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuta Matsumura
March 20, 2023
Technology
7.3k
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 CopilotのPlanモード
tsubakimoto_s
0
75
ChatGPT製:GitHub Copilotの紹介(デモ)
tsubakimoto_s
1
74
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
350
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
240
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
940
github/awesome-copilotのPHPのエージェントスキルを読む
tsubakimoto_s
0
120
エージェントスキルを作って自分のインプットに役立てよう v2
tsubakimoto_s
0
77
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
920
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
4
2.7k
Other Decks in Technology
See All in Technology
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
370
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
160
野蛮なアジャイル [サイボウズ発!]組織の常識を覆した反骨のスクラム実践記 / Barbaric Agile - Enterprise Agile Study Group
ama_ch
0
120
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
150
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
360
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
370
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
300
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
460
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
200
Getting Started with Google Antigravity
glaforge
0
350
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
A Tale of Four Properties
chriscoyier
163
24k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
370
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
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.