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
340
今からでも遅くない!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 ニフティ株式会社
GitHubで育つ コラボレーション文化 : ニフティでのインナーソース挑戦事例 - 2024-12-16 GitHub Universe 2024 Recap in ZOZO
niftycorp
PRO
0
2.3k
Grow on GitHub Collaboration Culture: Case Study of InnerSource Challenge - GitHub Universe 2024 Recap in ZOZO
niftycorp
PRO
0
31
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
260
継続的な改善のためのmodulesの適切な分割単位 - NIFTY Tech Talk #23
niftycorp
PRO
0
130
Re:ゼロから始めるTerraform生活 ~IaC入門編~ - NIFTY Tech Talk #23
niftycorp
PRO
0
130
Terraformにベストプラクティスを取り入れた - NIFTY Tech Talk #23
niftycorp
PRO
0
160
AWS AppSyncを用いた GraphQL APIの開発について - NIFTY Tech Talk #22
niftycorp
PRO
0
220
「天気予報があなたに届けられるまで」 - NIFTY Tech Talk #22
niftycorp
PRO
0
220
@nifty天気予報:フルリニューアルの挑戦 - NIFTY Tech Talk #22
niftycorp
PRO
0
500
Other Decks in Programming
See All in Programming
Grafana Cloudとソラカメ
devoc
0
140
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
160
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
200
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.4k
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
5.2k
TokyoR116_BeginnersSession1_環境構築
kotatyamtema
0
110
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
150
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
360
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
120
ファインディの テックブログ爆誕までの軌跡
starfish719
2
1.1k
Unity Android XR入門
sakutama_11
0
150
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
250
Featured
See All Featured
Speed Design
sergeychernyshev
26
790
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Thoughts on Productivity
jonyablonski
69
4.5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
GitHub's CSS Performance
jonrohan
1030
460k
Building an army of robots
kneath
302
45k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
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 コミュニティで作成されたカスタムアクションが存在 - 料金はパブリックリポジトリなら標準の実行環境なら無料 プライベートリポジトリはプランごとに一部無料枠が存在