2022年04月12日 Blog

Github Actionsのご紹介

はじめに

TechMagicでは、ソフトウェアのチーム開発にGitHubを使用しています。GitHubを使って開発していると、以下のようなワークフローを繰り返すことがあります。

  • 新しい人をcontributorとして入れる
  • コミットする
  • PRを立てる
  • Issueを立てる

この中で例として、Issueを立てる場合のワークフローを見てみましょう。

  1. Issueのレベルを見る、major/minor 緊急とか
  2. Issueが再現可能か
  3. 対応担当者を割り当てる
  4. コードレビュー
  5. 問題が修正されたかチェック
  6. リリースノートの準備
  7. バージョンを上げる
  8. mainへマージ(ここでCICDのパイプラインを起動)

     マージ -> テスト -> ビルド -> デプロイ

最初はこれらを手動で行うわけですが、定型化した作業はだんだん自動化したくなってきます。これらの作業を可能な限り自動化させるのがGitHub Actionsであります。

GitHub Actionsとは

簡単に言うと開発者のワークフローを自動化するプラットフォームです。CI/CDツールの一種だと思われがちですが、実は逆で、CI/CDはGitHub Actionsでできることの一つの機能です。つまり、アウトプットをデプロイする以外にも、幅広いワークフローの自動化ができるツールになります。

GitHub Actionsはリポジトリに何か変化があったら、それをリポジトリへのEventと呼びます。

つまり上記のワークフローの場合:

  • 新しい人をcontributorとして入れる
  • PRを立てる
  • Issueを立てる
  • マージする

などなどが当てはまります。

Eventに自動的に反応して自動的に実行するのがGitHub Actionsのワークフローです。

CI/CDパイプラインについて考える

CI/CDは最も一般的なワークフローの一つであります。

CI/CDとは?

CIとは継続的インテグレーション

継続的インテグレーション(Continuous Integration)

ソフトウェア開発において、ビルドやテストを自動化し、短期間で品質管理を行う手法になります。

CDとは継続的デリバリー(継続的デプロイ)

継続的デリバリー(Continuous Delivery)または継続的デプロイ(Continuous Deployment(継続的デプロイ)

開発者による変更をリポジトリから本番環境に自動的にリリースし、顧客がすぐに使用できるようにするというものになります。

分かり易く図で表現すると以下のイメージになります。


GitHub Actionsの使い方

GitHubのリポジトリの「Actions」の欄から、新しいworkflowの作成ができます。GitHubで様々なテンプレートも用意されているので、場合によっては自分で作る必要がなく、そのままでも使えます。

 

GitHub Actionsのファイルや文法を見てみましょう。

例として、コードをpushする時や、pull requestを立てる時にDjangoテスト(manage.py test)を自動的に行うCIを記述します。一般的にprojectの.githubのworkflowディレクトリーに記述します。DBはPostgreSQLを使用しています。

 

servicesキーワードを使って、ワークフロー内のジョブの一部であるサービスコンテナを作成できます。ここでは、サービスコンテナとしてpostgresのコンテナを指定しています。

stepキーワード以下には、実行内容を順次記述していきます。

usesキーワードでは、GitHubで事前に準備されている定義を指定します。「テストをするのも何もまずはcheckoutコマンドを使わないといけないよね!」ということなので自分でcheckoutコマンドを作るより、事前に準備・用意されているものを使いましょう。これは親切な人々がactionsパスを通して用意してくれています。@v2はバージョンを指しています。

ここを見れば一目瞭然でしょう、中にaction.ymlファイルがあります。
https://github.com/actions/checkout

同じくPythonの環境を用意してくれています。ここでは例として3.6, 3.7, 3.8のそれぞれのバージョンでテストを実行しています。名前も使うバージョンに関連付けて、動的に変化するようにしています。

action.ymlは同じくここで確認できます。
https://github.com/actions/setup-python

 

ここではコマンドを使用しています。Pythonの環境を整えたあとpipパッケージをインストールし、必要なrequirements.txtにあるパッケージをインストールしています。

 

最後にテストを走らせるための環境変数の設定やコマンドです。

その他のworkflow構文一覧はこちらを参照してください。
https://docs.github.com/ja/actions/reference/workflow-syntax-for-github-action

まとめ

Github Accountを持っていれば、簡単に試すことができます。公式ドキュメントも一通り揃えていて、一部まだ未翻訳の部分はあるものの、今後日本語ドキュメントの完成も期待できます。

今回、GitHub Actionsを使用して良いと思った点は、

  • GitHub にアカウントやリポジトリがあれば、そのまま使える、新しく何かサービスに登録や設定しなくて済む(これが結構楽)
    • リポジトリの設定で有効にする必要があります
  • 設定が簡単、開発者にとってわかりやすい(Jenkins等、他のプロダクトにに比べて)
  • ワークフローの実行時間に応じて利用料金は発生するが、仮想サーバなど管理の手間が無くてラクラク♪

https://docs.github.com/ja/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions

一方で、実際に使う時は、プロジェクトの状況によっては、つまずくポイントも多々あると思います。一例として、Dockerを利用している開発環境でDjangoのCIを構築使用とした場合、いくつかうまくいかない例もありあました。

機会があれば今後ご紹介したいと思います。

TechMagicでは食産業の未来を創造する仲間を募集しています!
随時採用イベントも行っておりますので、ご興味のある方はぜひ下記リンクよりお申し込みください。

【採用イベント申込フォーム】
https://forms.gle/x4GePAw3eaGMRvbF7

その他、募集ポジションの確認やオフィス見学・カジュアル面談の希望など、お気軽にHPからご連絡ください!

■TechMagic株式会社SNS: