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
Yuta Matsumura
March 20, 2023
Technology
13
5.5k
GitHub Actionsと"仲良くなる"ための練習方法
CI/CD Conference 2023 #CICD2023
https://event.cloudnativedays.jp/cicd2023/talks/1766
Yuta Matsumura
March 20, 2023
Tweet
Share
More Decks by Yuta Matsumura
See All by Yuta Matsumura
Microsoft Entra External IDとAzure AD B2C
tsubakimoto_s
0
180
Minimal Observability on Minimal API
tsubakimoto_s
0
54
ワークフローのコピペを自作で解消した話
tsubakimoto_s
0
37
Azure AI ことはじめ
tsubakimoto_s
0
430
Azureのコアサーバーレス Azure Functions
tsubakimoto_s
0
490
米国カンファレンスで活躍したAzure AI Speech
tsubakimoto_s
0
570
GitHub Codespaces Updates
tsubakimoto_s
0
460
.NET 8 がリリース直前だから振り返る
tsubakimoto_s
0
540
Web API development in Visual Studio 2022
tsubakimoto_s
0
3.6k
Other Decks in Technology
See All in Technology
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
220
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
280
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
110
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
740
4 Signs Your Business is Dying
shpigford
180
21k
Building Your Own Lightsaber
phodgson
103
6.1k
Code Reviewing Like a Champion
maltzj
520
39k
Agile that works and the tools we love
rasmusluckow
327
21k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Practical Orchestrator
shlominoach
186
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.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.