Upgrade to Pro — share decks privately, control downloads, hide ads and more …

これから始める継続的インテグレーション - GitHub Actions編

これから始める継続的インテグレーション - GitHub Actions編

第11回に続き、これから継続的インテグレーション(CI)を導入しようとしているエンジニアのために、GitHub Actionsのはじめかたを解説します。CIツールといえばCircleCIですが、なぜあえてGitHub Actionsを使うのかCircleCIとの比較をまぜつつ、どのように設定しワークフローが実行されていくのか、デバッグ方法やツールの使い方について解説していきます。

とことんDevOps

May 25, 2023
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. 発表者について • ⽥中智明 • VTJ技術部所属 • お仕事 • DevOps •

    技術ブログ • かんたんDevOpsの仕組み作り • 縁があれば外部メディアに寄稿 ← Think ITに寄稿しました 2 https://thinkit.co.jp/article/21848
  2. GitHub Actionsについて • GitHubが提供しているCI/CDのサービス • GitHubのあらゆるイベントでワークフローを実⾏ • issueやpull requestが作成されたとき •

    コードがプッシュされたとき • スケジュールを利⽤して、など • ワークフローを実⾏するOSはLinux/Windows/macOSから 選択可能 • GitHubがメンテしてくれる「GitHubホステッドランナー」 • ⾃分なりにカスタムできる「セルフホステッドランナー」 • 複雑なタスクをひとまとめにした「アクション」 4
  3. GitHub Actionsの料⾦ 5 プラン 料⾦ 1ユーザー/⽉ パブリックリポジトリ プライベートリポジトリ ストレージ 時間

    ストレージ 時間 Free $0 無制限 500 MB 2,000分/⽉ Pro $4 2 GB 3,000分/⽉ Team $4 2 GB 3,000分/⽉ Enterprise $21 50 GB 50,000分/⽉ • ストレージは全プロジェクトの成果物とPackagesの合計 • ワークフローを1秒でも起動したら次の分に切り上げ(1分1秒 → 2分) • WindowsはLinuxの2倍、macOSは10倍の時間が消費される • セルフホステッドランナーは時間を消費しない • 時間やストレージを使い切った場合は課⾦の設定をするまでワークフローが停⽌ • マシンのコア数やストレージの使⽤量に応じて従量課⾦が発⽣ • 課⾦の設定はGitHubの Settings > Billing and plans から
  4. GitHubホステッドランナーとセルフホステッドランナー • GitHubホステッドランナー • GitHubがメンテをしている • 毎回クリーンな状態で起動 • ⾊々なパッケージが⼊っている •

    何も意識せず使⽤を開始できる • セルフホステッドランナー • ⾃分でメンテをしていく • 前回終了時の状態で起動(ゴミが残ってたりする) • パッケージも⾃分で⽤意する • 節約のために使おうと考えたら考慮する部分が多くて逆に⾼コスト • GitHubホステッドランナーでは満たせない要求があった場合に使⽤を検 討 • 別のCIに乗り換えるというのも視野に 8
  5. (ざっくりと)Freeプランで⽐較 10 無料利⽤枠 Linux Windows macOS GitHub Actions 2,000分/⽉ 2,000分

    1,000分 200分 CircleCI 30,000クレジット/⽉ 3,000分 750分 400分 Linux Windows macOS GitHub Actions 2 CPU / 7 GB / 1分 2 CPU / 7 GB / 2分 3 CPU / 14 GB / 10分 CircleCI 2 CPU / 7.5 GB / 10クレジット 4 CPU / 15 GB / 40クレジット 4 CPU / 8 GB / 75クレジット ⽐較に使ったマシンタイプは以下 ※ Freeで選択できるマシンタイプはそれぞれのサービスで異なっているので、だいたい似ているものを選択 実⾏時間
  6. GitHub Actions > CircleCI 11 • GitHubとの⾼い統合性 • あらゆるイベントをトリガーできる •

    リポジトリの画⾯からActionsタブを開くことでアクセスできる • 特定のファイルやディレクトリの変更をトリガーに • CircleCIにはこの機能はない • orbsを使えば実現できる • ワークフローの中で判定してるので1度はワークフローが起動する
  7. CircleCI > GitHub Actions 12 • SSHデバッグ • ExecutorにSSHしてデバッグ •

    DLC(Docker Layer Caching) • GitHub Actionsではアクションを使って実現できる • ArmやGPUのマシンが使える • テストの⾃動分割 • インサイト • Gitプラットフォームのサポート • GitHub / GitLab / Bitbucketに対応
  8. GitHub Actionsのはじめかた • リポジトリ直下に 「.github/workflows」ディレクト リを作成 • 設定ファイルはYAMLフォーマッ トで記述 •

    拡張⼦は「.yml」or「.yaml」 • ファイル名はなんでもいい • ファイルが複数あってもいい • ファイルごとにワークフローが分 割される 16
  9. GitHub Actionsのデバッグ 22 • CircleCIのようにランナーにSSHすることはできない • GitHub Actionsにはロギング機能がある • 診断ロギング

    • ジョブの実⾏に関するログファイルを出⼒ • シークレットの名前に「ACTIONS_RUNNER_DEBUG」 • 値に「true」を設定し有効化
  10. GitHub Actionsのデバッグ 25 • CircleCIのようにランナーにSSHすることはできない • GitHub Actionsはにロギング機能がある • 診断ロギング

    • ジョブの実⾏に関するログファイルを出⼒ • シークレットの名前に「ACTIONS_RUNNER_DEBUG」 • 値に「true」を設定し有効化 • デバッグロギング • ジョブの実⾏ログが詳細になる • シークレットの名前に「ACTIONS_STEP_DEBUG」 • 値に「true」を設定し有効化
  11. ツール紹介 • gh • GitHub公式のCLIツール • ワークフローやジョブの状態をみたり • issueを作成したり •

    pull requestにコメントしたり、などなど • actionlint • ワークフローの静的解析ツール 31
  12. ツール紹介 • gh • GitHub公式のCLIツール • ワークフローやジョブの状態をみたり • issueを作成したり •

    pull requestにコメントしたり、などなど • actionlint • ワークフローの静的解析ツール • act • ワークフローをローカルで実⾏ 34
  13. まとめ 36 • CircleCIは⾼機能だけどちょっと使いたいだけの場合にはオー バースペック • パブリックリポジトリをメインに使ってるならGitHub Actions がはじめやすい •

    毎⽇のイシューの確認や整理なんかもGitHub Actionsなら⾃動 化できる • actionlintやactを活⽤してローカルデバッグで差をつけろ!!
  14. 参考リンク • 第2回 とことんDevOps勉強会(CircleCIの話) https://www.youtube.com/live/X-hVIIgtjn4 • GitHub Actionsの概要 https://docs.github.com/ja/actions/learn-github- actions/understanding-github-actions

    • GitHub Actionsのワークフロー構⽂ https://docs.github.com/ja/actions/using- workflows/workflow-syntax-for-github-actions • ワークフローをトリガーするイベント https://docs.github.com/ja/actions/using-workflows/events- that-trigger-workflows 37
  15. 参考リンク • この資料で使ったコード https://github.com/VirtualTech-DevOps/github-actions- demo • gh https://github.com/cli/cli • actionlint

    https://github.com/rhysd/actionlint https://rhysd.github.io/actionlint/ • act https://github.com/nektos/act 38
  16. ⽇本仮想化技術株式会社 概要 • 社名:⽇本仮想化技術株式会社 • 英語名:VirtualTech Japan Inc. • 設⽴:2006年12⽉

    • 資本⾦:3,000万円 • 本社:東京都渋⾕区渋⾕1-8-1 • 取締役:宮原 徹(代表取締役社⻑兼CEO)、伊藤 宏通(取締役CTO) • スタッフ:11名(うち、8名が仮想化技術専⾨エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 • 仮想化技術に関する各種調査 • 仮想化技術に関連したソフトウェアの開発 • 仮想化技術を導⼊したシステムの構築 • OpenStackの導⼊⽀援・新規機能開発 39 ベンダーニュートラルな 独⽴系仮想化技術の エキスパート集団 会社概要
  17. OpenStackへの取り組み • 通信事業社でのOpenStack基盤の検討⽀援および構築・運⽤ • NTTドコモ (2011年から技術評価を⽀援、商⽤利⽤に向けた検討・構 築・運⽤を実施) • NTT⻄⽇本 (商⽤利⽤に向けた評価・検討の⽀援、プロジェクトマ

    ネージメント⽀援) • ⼤⼿通信事業社 (NFV基盤についての検証・評価⽀援) • ベアメタルOpenStackの開発 • 仮想環境と物理環境をOpenStackで⼀括管理 • 単⼀のイメージで仮想マシンと物理マシンの双⽅を起動可能 • 2013年4⽉リリースのGrizzlyで本体にマージ 40 会社概要
  18. OpenStack Summitでの発表実績 41 2014/11 OpenStack Summit Paris We spoke the

    knowledge and tips when building and operating OpenStack Cloud on 100 Physical Servers. (Neutron HA, VXLAN performance,,,) 会社概要 2015/10 OpenStack Summit Tokyo We (NTT West, Canonical and VTJ) spoke ”Requirements for Providing Telecom Services on OpenStack-based Infrastructure”.
  19. 42