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
370
今からでも遅くない!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
910
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
92
2025-04-25 NIFTY's InnerSource Activites
niftycorp
PRO
0
320
外コミュニティ活動や登壇活動が技術 広報として大事だよ、と改めて周囲に伝 えられた件 - EM Oasis 特別会
niftycorp
PRO
0
190
Dify触ってみた。
niftycorp
PRO
1
290
Amazon Bedrockを使用して、 運用対応を楽にしてみた
niftycorp
PRO
1
310
自社製CMSからの脱却:10件のWebサイト再構築に学ぶ運用重視の技術選定 - NIFTY Tech Day 2025
niftycorp
PRO
0
140
エンジニアの殻を破る:インナーソースと社外活動がもたらした成長 - NIFTY Tech Day 2025
niftycorp
PRO
0
110
Other Decks in Programming
See All in Programming
Cursorハンズオン実践!
eltociear
2
1.2k
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.3k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
390
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
350
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
3
5.6k
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
190
What's new in Spring Modulith?
olivergierke
1
160
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
130
Devoxx BE - Local Development in the AI Era
kdubois
0
130
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
750
iOSでSVG画像を扱う
kishikawakatsumi
0
150
Developer Joy - The New Paradigm
hollycummins
1
340
Featured
See All Featured
Producing Creativity
orderedlist
PRO
347
40k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Docker and Python
trallard
46
3.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
920
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
How to Ace a Technical Interview
jacobian
280
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
GitHub's CSS Performance
jonrohan
1032
470k
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 コミュニティで作成されたカスタムアクションが存在 - 料金はパブリックリポジトリなら標準の実行環境なら無料 プライベートリポジトリはプランごとに一部無料枠が存在