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
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
900
GitHub ActionsのActionを作る
meilcli
0
450
GitHub Actions入門
meilcli
0
470
Azure Pipelinesのすゝめ
meilcli
0
340
Other Decks in Programming
See All in Programming
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
310
yield再入門 #phpcon
o0h
PRO
0
1.1k
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.7k
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
110
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
520
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
340
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
560
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Designing for Performance
lara
611
70k
Designing for Timeless Needs
cassininazir
1
440
GraphQLとの向き合い方2022年版
quramy
50
15k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
620
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
Measuring & Analyzing Core Web Vitals
bluesmoon
9
960
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がなければ自作することもできます