GitHub Actionsに入門してみた

GitHub Actionsに入門してみた
この記事をシェアする

はじめに

こんにちは、CloudBuildersのsugawaraです。

CI/CDやプラットフォームエンジニアリングに興味があったので、最近GitHub Actionsに入門してみました。CI/CDツールはこれまでAWS CodePipelineしか利用したことがなかったのですが、実際にGitHub Actionsを使ってみたら思ったよりもお手軽にCI/CDパイプラインを構築できてびっくりしました。

今回は、まだ入門していない人用にGitHub Actionsの概要と自分が利用した学習資料などを共有します!

GitHub Actionsってなに?

GitHub Actionsとは、GitHubが提供する継続的インテグレーション(CI)および継続的デリバリー(CD)のプラットフォームです。リポジトリのコードに変更が加えられたら自動でスクリプトを実行し、ビルド、テスト、デプロイのワークフローの自動化を簡単に行うことができます。

GitHub Actionsの構成要素

GitHub Actionsを設定する際の主な構成要素は下記となります。

  1. ワークフロー
    • .github/workflowsディレクトリ内にYAMLファイルを作成して、ワークフローを定義します。
    • 各ワークフローはトリガー(例: プッシュ、プルリクエスト、スケジュール)によって実行されます。
  2. ジョブとステップ
    • ワークフローは複数のジョブ(Job)で構成され、ジョブは複数のステップ(Step)から成ります。
    • ジョブは並行して実行することも可能で、依存関係を定義することもできます。
  3. アクション
    • 各ステップではアクション(Action)を実行します。アクションは再利用可能なスクリプトで、公式のアクションマーケットプレイスから取得できます。
  4. シークレットと環境変数
    • セキュアな情報(シークレット)や環境変数を使用して、ワークフロー中に機密情報を安全に扱えます。

下記のサンプルYAMLファイルは、GitHubリポジトリへのプッシュをトリガーに起動するワークフローです。起動したらリポジトリ内のコードを最新のUbuntu上にチェックアウト(クローン)し、依存関係を含めてNode.jsの環境をセットアップします。最後に予め定義したテストが実行されます。一度ワークフローを定義してしまえば、プッシュされるたびに実行されるため、ヒューマンエラーの回避や自動化が可能になってとても便利です。

name: Sample CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

おすすめの学習資料

下記は自分が使用してGitHub Actionsを学んだ学習資料となります。

YouTube

GitHub Actionsを使いこなせ!(by Japan Oracle Developers)

いきなり身銭を切ってUdemy講座や書籍を購入するのに抵抗がある場合、こちらのYouTubeでGitHub Actionsの概要を学びましょう。1時間半超えの動画ですが、後半は応用編のため概要を掴むだけならスキップでいいと思います。前半部分を見るだけで一通りの基本的な文法や使い方が学べるのでおすすめです。

Udemy

GitHub Actions と AWS で実現する DevOps 実践講座

自分が最初に学んだのはこちらのUdemy講座です。講師の津郷さんの講義動画は長すぎず短すぎず、端的に基本を学ぶことができるのでよく購入させてもらっています。

GitHub Actionsについては、Terraformを用いたCI/CDパイプラインを通して基礎基本を学ぶことができます。ハンズオン形式のため、実際にコードを書き、動かしていくことで能動的に学べます。基本的な構文の書き方はこちらで一通り学べるかと思います。

下記は講座の概要となります。気になった方はセール時に購入してみてください!

  • 組織/チーム
    • 組織作成
    • チーム作成
  • プロジェクト
    • プロジェクト作成
    • タスク管理
    • カスタムフィールド管理
    • ビュー管理
  • リポジトリ
    • リポジトリ作成
    • ブランチ戦略
    • ブランチ保護
  • GitHub Actions を使ったCI/CD
    • GitHub Actions の基本
      • ワークフロー
      • トリガー
      • ジョブ
      • ステップ
      • ランナー
      • 環境変数
      • シークレット
      • 式とコンテキスト
      • ジョブ間の依存
      • エラー処理
      • ジョブ間、ステップ間のデータ受け渡し
      • 条件分岐
      • 承認フロー
      • Slack通知
    • GitHub Actions ⇔ AWS 連携
    • CI/CD の実装
      • プレビュー
      • デプロイ

なお、Terraformがわからなくてもハンズオン自体は可能ですが、気になる方は予め津郷さんの別講座『AWS と Terraformで実現するInfrastructure as Code』を受講してもいいかもしれません。(どちらの講座もよくセールをやっています。)

書籍

GitHub CI/CD実践ガイド――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用

こちらは2024/5/29に発売されたばかりの書籍になります。Udemyを進めている最中にこちらの書籍の予約がスタートしたため、即予約購入しました。実はまだ全てを読み終えてはいませんが、とてもわかりやすいのでおすすめです。

タイトルにもある通り、ただGitHub Actionsの使い方を学ぶのではなく、GitHubを用いたCI/CDの実践のための書籍となります。したがって、GitHub Actionsの構文や機能の解説にとどまらず、継続的デリバリーの設計やセキュリティまでカバーしています。

また、各章の終わりにはコラムとして様々な分野の参考文献が列挙されています。自分の興味のある分野で読むべき書籍がなにかわかるので読書の指針になります。

下記は書籍の目次となります。興味を持たれた方は是非手にとってみてください。

[基礎編]

第1章 ソフトウェア開発とGitHub
第2章 GitHub Actionsの基礎概念
第3章 ワークフロー構文の基礎
第4章 継続的インテグレーションの実践
第5章 運用しやすいワークフローの設計
第6章 アクションによるモジュール化

[実践編]

第7章 クリーンなリポジトリの維持
第8章 Dependabotによる依存関係バージョンアップ
第9章 GitHub Releasesによるリリース自動化
第10章 GitHub Packagesによるパッケージ管理
第11章 OpenID Connectによるセキュアなクラウド連携
第12章 コンテナオーケストレーションのデプロイメント
第13章 アクションのオープンソース化

[応用編]

第14章 GitHub Actionsの高度な使い方
第15章 GitHub Actionsのセキュリティ
第16章 GitHub Actionsのセキュリティ
第17章 GitHub Appsトークンによるクロスリポジトリアクセス
第18章 継続的デリバリーの実践

ちなみに著者は『実践Terraform AWSにおけるシステム設計とベストプラクティス』の方です。こちらは少し情報が古いかもしれませんが、それでもTerraformを学習するのにはとても良いと思います。(Kindle版はたまにセールをやっています。)

番外編

下記はまだ手をつけられていませんが、今後見ていきたいなというものを挙げておきます。

GitHub DocのGitHub Actionsドキュメント

GitHubの公式ドキュメントにもハンズオンなどが豊富にあります。

Microsoft LearnのGitHub Actions

Microsoftが提供するMicrosoft Learnには、GitHub Actionsの基礎からAzureでのDevOpsの実践までかなり幅広く学習資料やハンズオンがあるようです。

どちらも無償なので気軽に試せるのがいいですね。

おわりに

今回はGitHub Actionsの概要と有益な学習資料を紹介しました。色々といじってみて、もっとGitHub Actionsと仲良くなりたいと思います!ということで、次回もGitHub Actionsのアウトプットしていきます!

この記事をシェアする
著者:sugawara
元高校英語教員。2023&2024 Japan AWS All Certifications Engineers。IaCやCI/CD、Platform Engineeringに興味あり。