GitHub Actionsは、GitHubが提供するソフトウェア開発におけるワークフローを自動化させるためのサービスです。この記事では、GitHub Actionsの特徴や注意点、実行環境などについて解説します。GitHub Actionsについて、学びたい方は是非とも参考にしてください。
公開日:2022年12月27日
専門領域:Node.js, MongoDB, AWS, Docker, Kubernetes
津郷 晶也
メーカー研究開発時代、当時では珍しいSPAの開発や特許開発を行う。その後、SIer時代には億を超える規模のWebサービスのアプリ開発、現在もIT会社で引き続き大規模なWebサービス開発を実践。また、IPA資格(高度)ではPM、セキュリティ、DBの3つを取得。個人が展開する技術ブログは2012年から始めて記事300本以上執筆、多い時には10万PV/月を超えるほどのブログに成長。
…続きを読むINDEX
GitHub Actionsとは
GitHub Actionsは、GitHub上のpush(ファイルの変更履歴をアップロード)などの操作をトリガーとして、事前に定義しておいた処理を実行できます。
以前はシステム開発で自動テストや自動ビルドを行うには、外部サービスとの連携が必要でした。GitHub Actionsがリリースされたことで、自動テストや自動ビルドがGitHubだけで実現できるようになりました。ビルド、テスト、デプロイなどのCI/CD関連のワークフローが自動化できるため、多くのエンジニアから注目されています。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >CI/CDとは
CIとは継続的インテグレーション(Continuous Integration)のことであり、ソフトウェアのビルドやテストを自動化して、短期間で品質向上や開発の効率化を目指す手法です。
CDとは、継続的デリバリー(Continuous Delivery)または継続的デプロイ(Continuous Deployment)のことを指します。CDはCIの要素に加えて、リリースやデプロイを自動化する手法です。これにより、開発者からの変更をリポジトリ (ファイルや変更履歴を保存する場所) から自動的にリリースして、ユーザーがすぐに使用できるようになります。これらCI/CD関連のワークフローを、GitHub ActionsはGitHub上で自動化できるようにします。
GitHub Actionsの特徴
GitHub Actionsは、既存のCI/CDツールと同じくリポジトリに対しての操作や、予約した時刻に事前に定義した処理を実行できます。これらは、GitHubが提供するサーバー上にある仮想マシンで実行ができるため、ユーザーがサーバーを準備しなくてよいというメリットがあります。
GitHub Actionsの使用例
GitHub Actionsの使用例としては、次のようなものが考えられます。
- JavaScriptのLintをPush時に実行する
- 特定のGitHub Projectsに、新規作成したIssueを自動的に追加する
- ソフトウェアのリリース時に、リリース情報をSendGrid経由でメール送信する
グループに新規メンバーを追加したとき、報告用のIssueを作成するこれらの処理は、既存のCI/CDツールでも可能です。しかし、GitHub Actionsであれば、GitHubとスムーズに連携できるメリットがあります。
ActionとWorkflow
実行したい処理と、その処理を実行するための条件定義の事をWorkflow(ワークフロー)と、GitHub Actionsでは呼びます。
Workflowは、リポジトリ内の.github/workflowsディレクトリに保存することで実行可能になります。Workflowでは、シェル(Unix OSのユーザーインターフェース)経由で任意のコマンドを実行できます。また、複数のActionを組み合わせてWorkflowを構築することも可能です。
GitHub Actionsの一覧
Action名 | 説明 |
---|---|
setup-node | Node.js環境のセットアップをする |
github-script | Workflowのコンテキスト内で、GitHub APIを実行する |
labeler | GitHub上のラベル管理ファイル「.github/labeler.yml」を作成する |
upload-artifact | 「artifact」として指定したファイルを保存する |
cache | キャッシュして処理を高速化する |
checkout | ファイルをリポジトリからチェックアウトする |
setup-java | Java環境をセットアップする |
setup-python | Python環境をセットアップする |
setup-ruby | Ruby環境をセットアップする |
setup-go | Go環境をセットアップする |
setup-haskell | Haskell環境のセットアップ |
create-release | リリースを作成する |
download-artifact | artifactとして保存されるファイルのダウンロード |
stale | イシューやプルリクエストのうち、一定期間活動のないものを閉じる処理をする |
setup-dotnet | NET core環境をセットアップする |
setup-elixir | Elixir環境をセットアップする |
first-interaction | プルリクエストやイシューをはじめて登録したユーザーに、メッセージを表示する |
上記Action以外にも、他のユーザーが作成したActionもあります。ユーザーが作成したActionは、マーケットプレイスで提供されています。
※ Github マーケットプレイスは下記URLよりご確認ください。
https://github.com/marketplace
GitHubとの連携
既存のCI/CDツールでは、push以外のイベントを検知するには、手間がかかります。GitHub ActionsはGitHubと連携しているため、GitHub上のさまざまなイベントが検知できます。
またActionを実行する際に、デフォルトでリポジトリのデータが搭載されているため、コードのテストやビルドに必要なソースコードのダウンロードをする必要がありません。
またリポジトリごとにGitHub Tokenを発行し、自動的に環境変数に登録されることも特徴のひとつです。これにより、Tokenをコピーやペーストすることなく、Action内でGitHub APIを安全に実行できます。
GitHub Actionsの注意点
GitHub Actionsは自由度が高く、GitHubが提供するサーバー上で処理を実行できます。しかし、GitHub Actionsには、以下のような制約があります。
- GitHub利用規約の範囲内で、使用をすること
- 同時実行可能なワークフローは、1リポジトリに対して20まで
- ワークフローで実行できるジョブの実行時間は、最大6時間まで
1つのアカウントで同時実行できるWindows・Linux環境内で実行されるジョブの最大数
プラン | ジョブの最大数 |
---|---|
Free | 20 |
Pro | 40 |
Team | 60 |
Enterprise | 180 |
1つのアカウントで同時実行できるmacOS環境内で実行されるジョブの最大数
プラン | ジョブの最大数 |
---|---|
Free | 5 |
Pro | 5 |
Team | 5 |
Enterprise | 50 |
プライベートリポジトリにおけるストレージと実行時間上限
プラン | 最大ストレージ容量 | 月あたり |
---|---|---|
Free | 500MB | 2000分 |
Pro | 1GB | 3000分 |
Team | 2GB | 10000分 |
Enterprise | 50GB | 50000分 |
※追加料金を支払うことで、ストレージ容量と実行時間上限が拡張されます。詳しくは公式サイトをご確認ください。
GitHub Actionsの仮想マシンの実行環境
GitHub Actionsの仮想マシンの実行環境は以下のようになります。
Windows・Linux
CPU:2コア (x86_64)
RAM:7GB
SSD:14GB
MacOS
CPU:3コア (x86_64)
RAM:14GB
SSD:14GBのスペース
上記のように仮想マシンとして使用できるOSは、Linux(Ubuntu)・Windows、macOSです。OS以外にも、主要ライブラリ・各種ランタイム・コンパイラなどのソフトウェア開発環境も標準インストールされています。そのため、一般的なサーバーでほとんどの処理は実行可能となります。
この記事では、GitHub Actionsでできることや特徴・制約などの注意点・仮想マシンの実行環境について解説しました。GitHub Actionsは、自動テストや自動ビルドがGitHubだけで実現できるため、システム開発において便利なツールです。この機会に、GitHub Actionsを活用して開発の効率化を目指しましょう。
GitHub Actions と AWS で実現する DevOps 実践講座
GitHubを120%活用して DevOps 環境を構築しよう!
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
github actionsの基本的な流れについて理解できた。code pipelineしか経験がなくgithub actionsについて学べたのは良かった。
他のCICDツールに比べてgithub actionsのメリット等がもう少し分かれば尚、良かった。
評価:★★★★★
GitHub ActionsとTerraformを活用してAWSのDevOps環境の構築方法のイメージを学ぶことができた。Node→AWS→Terraform→本講座と順番に受講してきたが、すべてわかりやすい講座で大変勉強になりました。
最新情報・キャンペーン情報発信中