Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
930
デプロイだけじゃない!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 ニフティ株式会社
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
44
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
110
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
160
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
79
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
120
ニフティのPagerDuty活用状況
niftycorp
PRO
0
110
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.6k
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
1k
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
110
Other Decks in Programming
See All in Programming
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
220
Developing static sites with Ruby
okuramasafumi
0
330
GoLab2025 Recap
kuro_kurorrr
0
780
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
120
JETLS.jl ─ A New Language Server for Julia
abap34
2
460
tparseでgo testの出力を見やすくする
utgwkk
2
290
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
470
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
140
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
180
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
130
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.1k
Patterns of Patterns
denyspoltorak
0
360
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
89
So, you think you're a good person
axbom
PRO
0
1.8k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
200
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Building the Perfect Custom Keyboard
takai
1
660
The agentic SEO stack - context over prompts
schlessera
0
560
Automating Front-end Workflow
addyosmani
1371
200k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
760
Discover your Explorer Soul
emna__ayadi
2
1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
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を活用すると効率的かつ安全な開発フローを構築できる • 工夫次第でチームに合ったカスタマイズがいくらでもできる