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入門 - NIFTY Tech Talk #15
Search
ニフティ株式会社
PRO
November 02, 2023
Video
Resources
Programming
1
360
今からでも遅くない!GitHub Actions入門 - NIFTY Tech Talk #15
ニフティ株式会社
PRO
November 02, 2023
Tweet
Share
Video
Resources
今さら聞けない!GitHub Actions超入門 - NIFTY Tech Talk #15
https://nifty.connpass.com/event/299800/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.5k
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
790
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
75
2025-04-25 NIFTY's InnerSource Activites
niftycorp
PRO
0
260
外コミュニティ活動や登壇活動が技術 広報として大事だよ、と改めて周囲に伝 えられた件 - EM Oasis 特別会
niftycorp
PRO
0
180
Dify触ってみた。
niftycorp
PRO
1
250
Amazon Bedrockを使用して、 運用対応を楽にしてみた
niftycorp
PRO
1
270
自社製CMSからの脱却:10件のWebサイト再構築に学ぶ運用重視の技術選定 - NIFTY Tech Day 2025
niftycorp
PRO
0
130
エンジニアの殻を破る:インナーソースと社外活動がもたらした成長 - NIFTY Tech Day 2025
niftycorp
PRO
0
88
Other Decks in Programming
See All in Programming
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
880
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
220
実践!App Intents対応
yuukiw00w
1
330
decksh - a little language for decks
ajstarks
4
21k
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
870
Vibe coding コードレビュー
kinopeee
0
460
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
690
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.5k
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
710
Infer入門
riru
4
1.6k
Langfuseと歩む生成AI活用推進
licux
3
290
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.7k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Facilitating Awesome Meetings
lara
55
6.5k
Practical Orchestrator
shlominoach
190
11k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
KATA
mclloyd
32
14k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Balancing Empowerment & Direction
lara
2
580
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Side Projects
sachag
455
43k
It's Worth the Effort
3n
187
28k
Transcript
今からでも遅くない! GitHub Actions 入門 ニフティ株式会社 会員システムグループ第1開発チーム 宮本達矢
自己紹介 宮本達矢 • @niftyトップページ開発/運用担当 • 趣味:読書 • 過去に参加したTech Talk ◦
SvelteKit, Next.jsの導入事例紹介など 〜ニフティ のフロントエンドの今とこれから〜 • Tech Day 2023にも出る予定です ◦ 飛び出せ!フロントエンド知見共有会 ~Next,Astro,Sveltekitを使ったエンジニアたちの 声~ • 最近あったこと ◦ 喉に穴子の骨が刺さり病院で抜いてもらう
聞いて欲しい人 ◎GitHub Actionsって何?という人 ◯ちょっとだけ触ったことがある人 😇 GitHub Actions チョットデキル
GitHub Actionsって何?
“ GitHub Actionsを使用すると、ワールドクラスのCI / CDですべてのソフトウェ アワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テス ト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望ど おりに機能させます。” https://github.co.jp/features/actions
より
CLIから実施できることは大抵なんでもできる - プルリク作成時に自動テスト - Jest - GO testing - pytest
- 特定ブランチへのpushで自動デプロイ - Terraform - AWS CDK - AWS SAM - Docker Image push - プルリクエストを作成したら自動レビュアー追加 - デプロイ完了時にwebhook経由のSlack通知 etc. 注:やってはいけないことも定められている https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions
GitHub Actionsってどう使うの?
yamlファイルをリポジトリの .github/workflows/ ディレクトリ配下に 置くだけ!
name: Run unit test on: pull_request: branches: - master -
develop jobs: tests: runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18.x' - name: Install packages run: yarn install - name: Run test run: yarn test 例:Jestのテストを 実施するGitHub Actions リポジトリの.github/workflows配下に yamlファイルを配置 - Actionを実行するトリガー条件の指定 - プルリクエストオープン・更新時・再オープン - マージ対象がmaster or developの場合 - Actionsの実施内容の記述 - ubuntuの最新版で実行 - タイムアウト5分 - 実施内容 i. checkout(actionからリポジトリアクセス) ii. Node.jsを実行環境に準備 iii. パッケージインストール iv. テスト実行
on: で始まる部分がトリガー設定 - 設定できるトリガー:35種類 - 各項目内でも細かくタイミングが存在 - 例:pull request -
作成時 - commit時 - ラベル追加時 etc. - 特定のブランチに対する更新で制限 - 特定のパス/ファイルの更新が含まれる 場合のみ発火 トリガー設定 https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows on: pull_request: types: [opened] branches: - develop paths: - "sample_app/**" - "!sample_app/README.md"
jobs: deploy: runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v3
- uses: actions/setup-node@v3 with: node-version: '18.x' - name: Install packages run: yarn install ... deploy-pages: runs-on: ubuntu-latest timeout-minutes: 5 steps: … ジョブ設定 jobs: で始まる部分がワークフローで 動作するジョブ設定 - 一つのワークフロー内で複数のジョブを 定義可能 - 本番デプロイするジョブ - GitHub Pagesデプロイするジョブ - ジョブの実行環境設定 - ホストランナー - タイムアウト設定 - (省略可能だけどおすすめしません!) - stepに実行内容を記述 - step名 - 実行コマンド - 利用カスタムアクション
カスタムアクション - 定義済みの特定の処理を再利用できる機能 - GitHub Marketplaceには20,516 件のActionsが登録(2023/10/23時点) - 各種ツールのセットアップ用Action -
各種クラウドの認証情報設定用Action - 定番Actionの他にも便利Actionが登録 - 多くのActionはコミュニティ製なので、利用前に確認 - 利用するためには一行(+必要に応じて設定)を書くだけ - 公開されたカスタムアクション以外にも自分で作成可能 - action.yml or action.yamlという名前のファイルを作って読み込むだけ - CI/CD前に必要な共通の手順を切り出し # Node.jsのセットアップ - uses: actions/setup-node@v3 with: node-version: '18.x'
環境変数・secret 環境変数や、機密情報の 登録が可能 - 環境変数 - yaml内での定義 - ワークフロー全体 -
job内限定 - step内限定 - コンソール上から事前定義 - ワークフロー内での定義 - secrets - コンソールから設定 - よく機密情報として扱うもの - IAM ロール、IAM アクセ スキー/シークレットアク セスキー - API Key - uses: aws-actions/configure-aws-credentials@v2 with: aws-region: ap-northeast-1 role-to-assume: ${{ secrets.AWS_ACCESS_IAM_ROLE }} env: node-version: '14.x' ... - name: Get Environment Config working-directory: .github/workflows/conf run: | API_ROOT=`cat prod.json | jq ".api_root" -r` echo "API_ROOT=$API_ROOT" >> $GITHUB_ENV - uses: actions/setup-node@v3 with: node-version: ${{ env.node-version }}
でもお高いんでしょう?
利用料金 - 課金は実行時間とストレージ基準 - 実行時間 Linux(vCPU 2): 0.008USD/分 - ストレージ
1GB: 0.008USD/日 - パブリックリポジトリでは標準のホステッドランナーなら無料 - プライベートリポジトリではプランごとに一定の無料利用枠 - Freeプランで月2000分、500MBのストレージ - OSによって実行時間には倍率がかかる - 無料利用枠を超えた場合は課金が必要 - タイムアウト設定で異常発生時の余計な時間消費を防ぐ - 無料利用枠を超える課金分も事前に上限の設定が可能 - うっかり使いすぎてクラウド死!という事態は防止 2023/10/31時点の情報 https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions https://docs.github.com/ja/billing/managing-billing-for-github-packages/about-billing-for-github-packages
まとめ - CLIからできることは大体なんでもできるGitHub Actions - リポジトリの.github/workflowsディレクトリ内のyamlファイルで 定義 - トリガーと実行内容を指定 -
GitHub コミュニティで作成されたカスタムアクションが存在 - 料金はパブリックリポジトリなら標準の実行環境なら無料 プライベートリポジトリはプランごとに一部無料枠が存在