Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

GitHubの成果物 6

Slide 7

Slide 7 text

GitHub Packages 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

actions.yaml 17

Slide 18

Slide 18 text

actions.yaml 18

Slide 19

Slide 19 text

actions.yaml 19

Slide 20

Slide 20 text

actions.yaml 20

Slide 21

Slide 21 text

actions.yaml 21

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

GitHub Actionsでデバッグ 27

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

gh 29

Slide 30

Slide 30 text

gh 30

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

actionlint(CLI) 32

Slide 33

Slide 33 text

actionlint(Web) 33

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

act 35

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

42