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. これから始める
    継続的インテグレーション
    GitHub Actions編
    ⽇本仮想化技術株式会社
    [email protected]
    2023/05/24
    1

    View full-size slide

  2. 発表者について
    • ⽥中智明
    • VTJ技術部所属
    • お仕事
    • DevOps
    • 技術ブログ
    • かんたんDevOpsの仕組み作り
    • 縁があれば外部メディアに寄稿
    ← Think ITに寄稿しました
    2
    https://thinkit.co.jp/article/21848

    View full-size slide

  3. アジェンダ
    • GitHub Actionsについて
    • CircleCIとの違い
    • GitHub Actionsのはじめかた
    3

    View full-size slide

  4. GitHub Actionsについて
    • GitHubが提供しているCI/CDのサービス
    • GitHubのあらゆるイベントでワークフローを実⾏
    • issueやpull requestが作成されたとき
    • コードがプッシュされたとき
    • スケジュールを利⽤して、など
    • ワークフローを実⾏するOSはLinux/Windows/macOSから
    選択可能
    • GitHubがメンテしてくれる「GitHubホステッドランナー」
    • ⾃分なりにカスタムできる「セルフホステッドランナー」
    • 複雑なタスクをひとまとめにした「アクション」
    4

    View full-size slide

  5. 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 から

    View full-size slide

  6. GitHubの成果物
    6

    View full-size slide

  7. GitHub Packages
    7

    View full-size slide

  8. GitHubホステッドランナーとセルフホステッドランナー
    • GitHubホステッドランナー
    • GitHubがメンテをしている
    • 毎回クリーンな状態で起動
    • ⾊々なパッケージが⼊っている
    • 何も意識せず使⽤を開始できる
    • セルフホステッドランナー
    • ⾃分でメンテをしていく
    • 前回終了時の状態で起動(ゴミが残ってたりする)
    • パッケージも⾃分で⽤意する
    • 節約のために使おうと考えたら考慮する部分が多くて逆に⾼コスト
    • GitHubホステッドランナーでは満たせない要求があった場合に使⽤を検

    • 別のCIに乗り換えるというのも視野に
    8

    View full-size slide

  9. CircleCIとの違い
    9
    • 無料利⽤枠は時間ではなくクレジットが付与
    • マシンタイプやストレージの使⽤に応じてクレジットを消費
    • Freeプランで使う分にはGitHub Actionsとそう変わらない
    • 名称が微妙に違う
    • GitHub Actionsの「アクション」はCircleCIの「orbs」
    • GitHub Actionsの「ランナー」はCircleCIの「Executor」

    View full-size slide

  10. (ざっくりと)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で選択できるマシンタイプはそれぞれのサービスで異なっているので、だいたい似ているものを選択
    実⾏時間

    View full-size slide

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

    View full-size slide

  12. CircleCI > GitHub Actions
    12
    • SSHデバッグ
    • ExecutorにSSHしてデバッグ
    • DLC(Docker Layer Caching)
    • GitHub Actionsではアクションを使って実現できる
    • ArmやGPUのマシンが使える
    • テストの⾃動分割
    • インサイト
    • Gitプラットフォームのサポート
    • GitHub / GitLab / Bitbucketに対応

    View full-size slide

  13. どんな時にGitHub Actionsを使うのか
    13
    • GitHubを使っている
    • パブリックリポジトリがメイン
    • CIに⾼機能を求めてない
    • UIとかダッシュボードとか
    • 簡単にはじめたい

    View full-size slide

  14. どんな時にCircleCIを使うのか
    14
    • GitLabやBitbucketを使っている
    • プライベートリポジトリがたくさん
    • ワークフローを早く終わらせたい
    • ⾼機能なCIを使いたい

    View full-size slide

  15. GitHub Actionsのはじめかた
    • 特別な設定は不要
    • GitHubにリポジトリを作成
    • リポジトリにYAMLフォーマットの設定ファイルを⼊れる
    15

    View full-size slide

  16. GitHub Actionsのはじめかた
    • リポジトリ直下に
    「.github/workflows」ディレクト
    リを作成
    • 設定ファイルはYAMLフォーマッ
    トで記述
    • 拡張⼦は「.yml」or「.yaml」
    • ファイル名はなんでもいい
    • ファイルが複数あってもいい
    • ファイルごとにワークフローが分
    割される
    16

    View full-size slide

  17. actions.yaml
    17

    View full-size slide

  18. actions.yaml
    18

    View full-size slide

  19. actions.yaml
    19

    View full-size slide

  20. actions.yaml
    20

    View full-size slide

  21. actions.yaml
    21

    View full-size slide

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

    View full-size slide

  23. 診断ロギング
    ghコマンドで設定 Webから設定
    23

    View full-size slide

  24. 診断ロギング
    ghコマンドでログ出⼒ Webからダウンロード
    24

    View full-size slide

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

    View full-size slide

  26. デバッグロギング
    設定前 設定後
    26

    View full-size slide

  27. GitHub Actionsでデバッグ
    27

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  30. actionlint(CLI)
    32

    View full-size slide

  31. actionlint(Web)
    33

    View full-size slide

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

    View full-size slide

  33. まとめ
    36
    • CircleCIは⾼機能だけどちょっと使いたいだけの場合にはオー
    バースペック
    • パブリックリポジトリをメインに使ってるならGitHub Actions
    がはじめやすい
    • 毎⽇のイシューの確認や整理なんかもGitHub Actionsなら⾃動
    化できる
    • actionlintやactを活⽤してローカルデバッグで差をつけろ!!

    View full-size slide

  34. 参考リンク
    • 第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

    View full-size slide

  35. 参考リンク
    • この資料で使ったコード
    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

    View full-size slide

  36. ⽇本仮想化技術株式会社 概要
    • 社名:⽇本仮想化技術株式会社
    • 英語名:VirtualTech Japan Inc.
    • 設⽴:2006年12⽉
    • 資本⾦:3,000万円
    • 本社:東京都渋⾕区渋⾕1-8-1
    • 取締役:宮原 徹(代表取締役社⻑兼CEO)、伊藤 宏通(取締役CTO)
    • スタッフ:11名(うち、8名が仮想化技術専⾨エンジニアです)
    • URL:http://VirtualTech.jp/
    • 仮想化技術に関する研究および開発
    • 仮想化技術に関する各種調査
    • 仮想化技術に関連したソフトウェアの開発
    • 仮想化技術を導⼊したシステムの構築
    • OpenStackの導⼊⽀援・新規機能開発
    39
    ベンダーニュートラルな
    独⽴系仮想化技術の
    エキスパート集団
    会社概要

    View full-size slide

  37. OpenStackへの取り組み
    • 通信事業社でのOpenStack基盤の検討⽀援および構築・運⽤
    • NTTドコモ (2011年から技術評価を⽀援、商⽤利⽤に向けた検討・構
    築・運⽤を実施)
    • NTT⻄⽇本 (商⽤利⽤に向けた評価・検討の⽀援、プロジェクトマ
    ネージメント⽀援)
    • ⼤⼿通信事業社 (NFV基盤についての検証・評価⽀援)
    • ベアメタルOpenStackの開発
    • 仮想環境と物理環境をOpenStackで⼀括管理
    • 単⼀のイメージで仮想マシンと物理マシンの双⽅を起動可能
    • 2013年4⽉リリースのGrizzlyで本体にマージ
    40
    会社概要

    View full-size slide

  38. 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”.

    View full-size slide