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...
Search
ニフティ株式会社
PRO
November 02, 2023
Video
Resources
Programming
0
880
デプロイだけじゃない!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 ニフティ株式会社
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
520
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
57
2025-04-25 NIFTY's InnerSource Activites
niftycorp
PRO
0
230
外コミュニティ活動や登壇活動が技術 広報として大事だよ、と改めて周囲に伝 えられた件 - EM Oasis 特別会
niftycorp
PRO
0
120
Dify触ってみた。
niftycorp
PRO
1
230
Amazon Bedrockを使用して、 運用対応を楽にしてみた
niftycorp
PRO
1
240
自社製CMSからの脱却:10件のWebサイト再構築に学ぶ運用重視の技術選定 - NIFTY Tech Day 2025
niftycorp
PRO
0
120
エンジニアの殻を破る:インナーソースと社外活動がもたらした成長 - NIFTY Tech Day 2025
niftycorp
PRO
0
80
システム全体像把握の超高速化〜システム関連図を使い倒そう (LT) - NIFTY Tech Day 2025
niftycorp
PRO
0
79
Other Decks in Programming
See All in Programming
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
170
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
0
350
Hack Claude Code with Claude Code
choplin
7
2.6k
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
470
レトロゲームから学ぶ通信技術の歴史
kimkim0106
0
110
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
3
410
AWS Summit Japan 2024と2025の比較/はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
0
120
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
930
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
240
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
8.7k
型で語るカタ
irof
0
700
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Designing for humans not robots
tammielis
253
25k
RailsConf 2023
tenderlove
30
1.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
340
Scaling GitHub
holman
460
140k
The Pragmatic Product Professional
lauravandoore
35
6.7k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Building an army of robots
kneath
306
45k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
It's Worth the Effort
3n
185
28k
Transcript
Copyright © NIFTY Corporation All Rights Reserved. デプロイだけじゃない!GitHub Actionsの活用法 渡邊 大介
会員システムグループ 第一開発チーム
Copyright © NIFTY Corporation All Rights Reserved. 渡邊 大介 入社 2019年4月(5年目)
担当業務 自社WEBサービスの運用開発 趣味 映画、ドライブ、バドミントン 自己紹介
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページについて
01
Copyright © NIFTY Corporation All Rights Reserved. ニフティトップページ • 20世紀から存在する月間3,000万PVのポータルサイト
• 多くのコンテンツを展開している ◦ 接続会員向け(宝箱、ニフくじ、メール、ニフティ ポイントクラブ) ◦ その他(ニュース、検索、天気、占いなど)
Copyright © NIFTY Corporation All Rights Reserved. ブランチ戦略 各ブランチと各環境の対応付けを実施 開発環境#1
featureブランチ developブランチ 本番環境 masterブランチ PR#1 開発環境#2 ラベル付与 ラベル付与 ステージング環境 マージ時 PR#2 PR#3 マージ時 施策A 施策B 開発環境#1 ラベル付与 PR#4 施策C releaseブランチ
Copyright © NIFTY Corporation All Rights Reserved. 安全にPRをレビューするための工夫
02
Copyright © NIFTY Corporation All Rights Reserved. PRレビューの課題 • ユニットテストの結果がわからない
◦ ユニットテストは実装しているが、ローカルでしか確認できない ◦ バグやエラーの発見が機械的にできていない ◦ 不具合がある状態でリリースされてしまう問題が発生 • ブランチ戦略にあった実装、レビュー方法が確立できていない ◦ 具体的に各ブランチで何をやるべきかが明確ではなかった ◦ ドキュメント、環境変数の更新など
Copyright © NIFTY Corporation All Rights Reserved. ユニットテスト自動化 • PRを出したタイミングでユニットテストを実行するGitHub
Actionsが自動的に起動 • ユニットテストが失敗した場合はPRをマージできないように制御 • 40行程度のコードで実現可能 name: Run unit test on: pull_request: branches: - master - develop paths: - 'public/**' - 'src/**' push: branches: - master - develop paths: - 'public/**' - 'src/**' env: node-version: '14.x' jobs: tests: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ env.node-version }} - name: Install packages run: yarn install - name: Run type check run: yarn type-check - name: Run test run: yarn test:coverage
Copyright © NIFTY Corporation All Rights Reserved. マージに必要な項目を自動で投稿 • PRの品質と整合性を担保するためのマージ要件を自動的に投稿する
◦ 実装方法などの詳しい内容はブログ記事を参照 • 30行程度のコードで実現可能 name: Pull Request Comment on: pull_request: types: [opened] jobs: post_comment: runs-on: ubuntu-latest timeout-minutes: 5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} WORKING_DIRECTORY: .github/workflows/conf/pr_comments steps: - name: Checkout uses: actions/checkout@v3 - name: Check Base Branch name working-directory: ${{ env.WORKING_DIRECTORY }} run: | BRANCH_ACTION=`cat pull_request_comment.json | jq '.["${{ github.base_ref }}"]' -r` if [ "$BRANCH_ACTION" != "null" ]; then echo "IS_COMMENT_POST=true" >> $GITHUB_ENV COMMENT_FILE_PATH=`echo $BRANCH_ACTION | jq '.["comment_file_path"]' -r` echo "COMMENT_FILE_PATH=$COMMENT_FILE_PATH" >> $GITHUB_ENV fi - name: Create comment working-directory: ${{ env.WORKING_DIRECTORY }} if: ${{ contains( env.IS_COMMENT_POST, 'true') }} env: URL: ${{ github.event.pull_request.html_url }} run: | gh pr comment -F ${{ env.COMMENT_FILE_PATH }} "${URL}"
Copyright © NIFTY Corporation All Rights Reserved. レビュアーの自動追加 • PRのレビュアーとアサイニーを追加するのを忘れてしまう問題が発生
• Auto Assign ActionというActionを導入することで、設定ファイルに記述したレビュ アーとアサイニーを自動的に追加 • 10行程度のコードで実現可能 name: "Auto Assign" on: pull_request: types: [opened, ready_for_review] jobs: autoassign: name: AddAssignees & Reviewers runs-on: ubuntu-latest steps: - name: Auto Assign Action uses: kentaro-m/
[email protected]
with: repo-token: "${{ secrets.GITHUB_TOKEN }}"
Copyright © NIFTY Corporation All Rights Reserved. リリースノートの自動生成 03
Copyright © NIFTY Corporation All Rights Reserved. GitHubリリースノートとは • ソフトウェアの新しいバージョンが公開されるたびに作成される文書のことを指す
• このノートには、そのバージョンの変更点、新機能、修正内容、既知の問題点など、ユーザーや 開発者が知っておくべき情報が詳細に書かれている
Copyright © NIFTY Corporation All Rights Reserved. GitHub運用を行っているチームの要望 • スクラムを採用した開発を行っているので、スプリント毎のリリース内容を把握したい
• ブランチをカテゴリ別に整理したい • 管理している5つのリポジトリ毎にリリースノートを作成したい • スプリント終了時にリリースノートを自動生成したい
Copyright © NIFTY Corporation All Rights Reserved. リリースドラフターを使って解決 • release-drafterというActionを使って実現
• PRを出したときのブランチ名を参照し、適切なラベル を付与 • そのラベルに基づいてカテゴリを分けたリリースノー トを生成 • スプリント終了時にBOTが自動的にリポジトリ毎にリ リースノートを作成
Copyright © NIFTY Corporation All Rights Reserved. 工夫した点(小技) • リリースノートのタイトルとタグがsprint{数字}という形でつけているので、この数字をスプ
リントが変わるごとに変化させたい • github-scriptというワークフロー内でJavaScriptを実行できるactionを用いて、最新のリリー スノートのタグを取得し、+1を行う • 詳しい内容はブログ記事を参照
Copyright © NIFTY Corporation All Rights Reserved. ドキュメント生成ツールの自動更新 04
Copyright © NIFTY Corporation All Rights Reserved. TypeDocとは • TypeScriptで記述されたアプリケーション用のドキュ
メント生成ツール • コード内にコメントを書き、特定の生成コマンドを実 行するとドキュメントが生成される • 公式ドキュメント
Copyright © NIFTY Corporation All Rights Reserved. 課題 • アプリケーションの改修に伴い、コード内コメントも追加されていく
• 手動でのドキュメント生成の方法しかないので、ローカル環境でしか確認できない • 人によって最新の情報ではないので、一貫性が保てない
Copyright © NIFTY Corporation All Rights Reserved. ドキュメント更新の自動化 • GitHub
Pagesを使ってGitHubだけで完結する構成で実装を行った • GitHub Pagesはプライベート公開が可能なので、アクセス権限を考えなくてすむ • actions-gh-pagesというactionを使い、masterブランチにマージされたタイミングで TypeDoc用のブランチにpushされる • 30行程度のコードで実現可能 name: Deploy TypeDoc to GitHub Pages on: push: branches: - master env: node-version: '14.x' jobs: deploy-typedoc: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ env.node-version }} - name: Build TypeDoc working-directory: ./ run: | yarn yarn gendoc - name: TypeDoc Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./references
Copyright © NIFTY Corporation All Rights Reserved. まとめ • GitHub
Actionsを活用すると効率的かつ安全な開発フローを構築できる • 工夫次第でチームに合ったカスタマイズがいくらでもできる