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
400
1
Share
今からでも遅くない!GitHub Actions入門 - NIFTY Tech Talk #15
ニフティ株式会社
PRO
November 02, 2023
Video
Resources
今さら聞けない!GitHub Actions超入門 - NIFTY Tech Talk #15
https://nifty.connpass.com/event/299800/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
210
AI 開発合宿を通して得た学び
niftycorp
PRO
0
210
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
78
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
520
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
260
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
100
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
170
ニフティのPagerDuty活用状況
niftycorp
PRO
0
140
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.6k
Other Decks in Programming
See All in Programming
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
250
Java 21/25 Virtual Threads 소개
debop
0
330
安いハードウェアでVulkan
fadis
1
930
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
110
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
140
事業会社でのセキュリティ長期インターンについて
masachikaura
0
230
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
340
飯MCP
yusukebe
0
490
iOS機能開発のAI環境と起きた変化
ryunakayama
0
170
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
110
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
510
Featured
See All Featured
Abbi's Birthday
coloredviolet
2
6.4k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
400
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Pragmatic Product Professional
lauravandoore
37
7.2k
Faster Mobile Websites
deanohume
310
31k
Docker and Python
trallard
47
3.8k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
240
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
150
Building the Perfect Custom Keyboard
takai
2
720
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 コミュニティで作成されたカスタムアクションが存在 - 料金はパブリックリポジトリなら標準の実行環境なら無料 プライベートリポジトリはプランごとに一部無料枠が存在