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
meil
December 03, 2020
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラシルの開発で使ってるGitHub Actions
https://bethesun.connpass.com/event/195125/
meil
December 03, 2020
More Decks by meil
See All by meil
プログラミング言語(?)を自作した話
meilcli
0
920
GitHub ActionsのActionを作る
meilcli
0
450
GitHub Actions入門
meilcli
0
480
Azure Pipelinesのすゝめ
meilcli
0
340
Other Decks in Programming
See All in Programming
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.7k
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
910
Spec-driven Development with AI
simas
PRO
0
2.3k
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
300
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
340
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
200
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
240
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
110
Event is what happens
moro
2
3.7k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.8k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
630
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
Claude Code のすすめ
schroneko
67
230k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
121
120k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
320
Why Our Code Smells
bkeepers
PRO
340
58k
Odyssey Design
rkendrick25
PRO
2
930
Transcript
クラシルの開発で使ってる GitHub Actions クラシル Tech Talk #3
自己紹介 • Twitter: @penguin_sharp • GitHub: MeilCli • Speaker Deck:
MeilCli ← 今日のスライドはこのアカウントで公開します • Skill: C#, Kotlin, Android, Azure Pipelines, GitHub Actions • Career: ◦ 新卒で入社した会社で Android・Xamarin.Androidアプリ開発を行う ◦ 2020/2にdelyに入社しクラシル、特にチラシ機能の開発に関わる
まえがき クラシルではCI/CDにさまざまなサービスを使ってます AWS CodeBuild, Bitrise, GitHub Actions
まえがき ぶっちゃけると主にAWS CodeBuild使ってます
まえがき 今回はMeilCliが今までに社内のCodeBuild派に抗って 導入してきたGitHub Actionsを紹介します
GitHub Actionsのなにがいいのか • OSSに優しい料金設計 • Windows, macOS, Linux環境 • MS資本
• RunnerがC#製 ◦ https://github.com/actions/runner https://github.com/features/actions
GitHub Actionsのなにがいいのか いろいろいいところあるけど やっぱりGitHubと親和性が高いのがいい CI/CDするだけならAzure Pipelinesで十分ですし…
GitHub Actionsを軽くおさらい GitHub RepositoryのTopにあるここからActionsをクリック
GitHub Actionsを軽くおさらい 最初はRepositoryから推測されたおすすめのWorkflowがサジェストされるので問題なさ そうならそれを活用する
GitHub Actionsを軽くおさらい Workflowの見かた • on: Workflowをトリガーするイベント定義 • jobs: 実行単位(Job)を定義 •
build: buildという名前のJobを定義 • steps: Jobで何をするかを定義 ポイント • stepsでActionやシェルを使い処理を連結
細かい所を説明すると時間が足りないの で何を使えば何ができるかを紹介します
PullRequestのマイルストーンチェック やりたいこと: PullRequestにマイルストーンを付ける運用にしているので忘れないようにしたい アプローチ: PullRequestにマイルストーンが付いていなかったらコメントする
PullRequestのマイルストーンチェック 解決策: octokit/request-actionを使ってGitHubのAPIを叩く jobs: check: runs-on: ubuntu-latest steps: - uses:
octokit/
[email protected]
if: # ここでWebhook Payload の値などを確認すれば良い with: route: POST /repos/:repository/pulls/:pull_number/reviews repository : ${{ github.repository }} pull_number : ${{ github.event.pull_request.number }} body: "PullRequest comment" env: GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
PullRequestのマイルストーンチェック 詳細なサンプルはこちらに公開しています https://github.com/MeilCli/actions/blob/master/.github/workflows/check-has-milestone.yml
ファイル生成の自動化 やりたいこと: ツールで自動生成するファイルの生成をCIで自動化したい アプローチ: CIでファイルを自動生成し、差分があればPullRequestを作成する
ファイル生成の自動化 解決策: peter-evans/create-pull-requestを使う jobs: check: runs-on: ubuntu-latest steps: - run:
echo "example" > message.txt - uses: peter-evans/create-pull-request@v3 with: commit-message : 'commit message' title: 'PR title' assignees : 'MeilCli' reviewers : 'MeilCli'
Slackへ通知 やりたいこと: CIのエラー通知や定期実行結果をSlackで見たい アプローチ: Slack Incoming Webhooksを使う ref: https://api.slack.com/messaging/webhooks
Slackへ通知 解決策: 8398a7/action-slackを使う & Webhook URLをGitHub ActionsのSecretに登録 jobs: notification :
runs-on: ubuntu-latest steps: - uses: 8398a7/action-slack@v3 with: status: custom custom_payload : | { text: 'Message from GitHub Actions' } env: SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL }}
GitHub Actionsの高速化 やりたいこと: ビルドに時間がかかるので早くしたい アプローチ: 依存物やビルド結果などをキャッシュする
GitHub Actionsの高速化 解決策: actions/cacheを使う jobs: build: runs-on: ubuntu-latest steps: -
uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: java-version : 1.8 - uses: actions/cache@v2 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('build.gradle') }} restore-keys : | ${{ runner.os }}-gradle- - run: chmod +x gradlew - run: ./gradlew build
まとめ • クラシルでは以下のActionなどを活用しています ◦ octokit/request-action ◦ peter-evans/create-pull-request ◦ 8398a7/action-slack ◦
actions/cache • GitHub Marketplaceで良さげなActionを探すといいです • Actionがなければ自作することもできます