ソフトウェア開発を効率化するCI/CDが注目されていますが、GitHub ActionsはGitHubでCI/CDを実現できるツールです。GitHub Actionsは無料で利用できる上に、機能性は他のCI/CDツールに引けを取りません。この記事ではGitHub Actionsとはどういったものかといった概要から、利用するメリット、注意点、使用例についてまとめています。
目次
GitHub Actionsとは【ワークフローの自動化を実現する機能】
GitHub Actionsとは、あらかじめ定義した処理と条件の組合せ(=ワークフロー/Workflow)を自動化するGitHub公式の機能です。
GitHub Actionsではリポジトリに対するプッシュなどの処理をトリガーとして、専用のWorkflowに定義しておいた処理を自動で実行します。
GitHub Actionsを使うことにより、開発の現場で注目されている「CI/CD(※)」の実現も可能です。
CI/CDとは「Continuous Integration/Continuous Delivery」の略語で、日本語では継続的インテグレーション/継続デリバリーと訳す。
ビルド・テスト・デプロイと言った開発に関わる各種作業を自動化し、継続的に行う仕組みです。
【図解】CI/CD とは?非エンジニアの方向けにわかりやすく解説します
用語の定義や専門家の解説だけでは、具体的に思い描くのが難しい用語の一つに「CI/CD」があります。この記事では何が重要で、ソフトウェア開発などになぜ必要か、実務経験の無い方にもわかりやすく説明しています。実際の作業や手法は高度ですが、目指している考え方には価値があり、多くの分野に応用可能なノウハウと考えます。 CI/CD の概要 ソフトウェア開発などの業務をより正確に、より効率良く進めるための手法…
GitHub Actionsを構成する主なコンポーネント・機能
GitHub Actionsはいくつかのコンポーネント・機能によって構成されています。以下、そのなかでも主な種類をみていきましょう。
Action | あらかじめ定義されたタスクを実行するカスタムアプリケーション
Actionとは定義済の処理を実行する、GitHub Actions専用のカスタムアプリケーションです。既存のActionはGitHub Marketplaceで探せる他、自分でActionを作成することもできます。
主なActionの例
以下、実際にどのようなActionがあるか、主な例をみていきましょう。
<Actionの例>
checkout | リポジトリからファイルをチェックアウトする |
upload-artifact | 任意のファイルを「成果物(artifact)」として保存する |
download-artifact | 「成果物(artifact)」として保存されているファイルをダウンロードする |
cache | 依存関係やビルドをキャッシュして処理を高速化する |
github-script | GitHub APIによりGitHubの各種機能にアクセスする |
create-release | GitHub Release APIにより、リリースを作成する |
stale | 一定期間使われていないイシューやプルリクエストがある場合に警告したり、それらを閉じたりする |
labeler | プルリクエストにラベルを付与する |
delete-package-versions | GitHub Packagesからパッケージのバージョンを削除する |
setup-node | Node.js環境を構築する |
setup-python | Python環境を構築する |
setup-go | Go環境を構築する |
setup-dotnet | .NET CLIの環境を構築する |
setup-java | Java環境を構築する |
toolkit | アクションを簡単に作成するのに役立つツールキットを使えるようにする |
javascript-action | JavaScriptアクションを生成する |
typescript-action | TypeScriptアクションを生成する |
Workflow | 実行する処理とその処理を実行する条件をまとめたプロセス
Workflowとは実行する処理とその処理を実行する条件をまとめたプロセスです。いくつかのActionを組み合わせて、Workflowを作成する方法もあります。
Runner | ワークフロー(Workflow)を実行するサーバー
GitHubでは、Workflowを実行するサーバー(環境)のことをRunnerと呼びます。GitHub Actionsを利用する際は、GitHub公式が用意する仮想マシンをRunnerとして利用可能です。自分でRunnerを用意して利用することもできます。
Job | 同一Runner上で実行されるワークフロー(workflow)のステップ
Jobとは、同一Runner上で実行されるworkflow内のステップを指します。Jobは他のJobと、依存関係を設定することも可能です。デフォルトでは、Job間に依存関係はなく並列的に実行されます。
GitHub Actionsを使うメリット
GitHub Actions以外にも、CI/CDのような自動化を実現するツールはあります。そうしたなかでGitHub Actionsの大きなメリットとしてあげられるのが、GitHub提供の仮想サーバーを利用できる点です。
GitHub Actionsを使う場合は、必ずしもユーザー自身でサーバーを用意する必要がありません。なお仮想サーバーでなく物理サーバーを使う必要がある際は、ユーザー自身でサーバーを用意してGitHub Actionsを使うことも可能です。
またGitHubに関わる処理の自動化については、公式の機能だけあってGitHub Actionsならスムーズに実現できます。これは他ツールにないGitHub Actionsならではのメリットと言えるでしょう。
GitHub Actions利用上の注意点
GitHub Actionsは、利用プランによって以下にあげる機能的な制限があります。
プラン | 最大同時 Job数 | 最大同時 Job数 (macOS) | 利用可能な 時間の上限 | 利用可能な ストレージ容量 |
---|---|---|---|---|
Free | 20 | 5 | 2,000分/月 | 500MB |
Pro | 40 | 5 | 3,000分/月 | 1GB |
Team | 60 | 5 | 10,000分/月 | 2GB |
Enterprise | 180 | 50 | 50,000分/月 | 50GB |
またGitHub Actionsは、利用ポリシーの範囲内でのみ使うことができます。たとえばクリプトマイニングなどでの利用は禁止されており使えません。GitHub各プランや利用規約についての詳細は、以下公式サイトで確認下さい。
GitHub Actionsの利用例
GitHub Actionsは、様々な用途で活用が可能です。以下、参考までにいくつか利用例をみていきましょう。
- リリースノートやリリースのSourceなどを自動作成して、ソフトェアのリリース作業を効率化する
- JavaやPythonなどの環境を自動的に構築する
- プルリクエストしたことなどを、Slackやメールなどで自動通知する
- プッシュの都度、JavaScriptのLintを実行する
ここにあげた以外にも、GitHub Actionsには様々な利用例が考えられます。
GitHub Actionsの基本的な使用方法の例
ここではGitHub Actionsを実際に設定しながら、基本的な使用方法をみていきましょう。
※GitのインストールやGitHubのアカウント作成など、GitHubに関する初期設定は終わっているものとします。 GitやGitHubの初期設定については、以下記事を参考にして下さい。
GitHubは世界中のエンジニアが開発を行う際に、プログラムのソースコードを共有するのに利用しているサービスです。初めてGitHubを使うときは、GitHub独自のルールや使い方を把握する必要があります。ただ、GitHubで使うコマンドや管理画面の操作は難しくないので、1度理解すれば簡単に使えるでしょう。 なおGitHubの基本的な知識については、以下記事で解説しています。GitHubの概要から学…
まずはGitHub管理画面から、GitHub Actionsを設定する専用のレポジトリを作成します。
GitHub管理画面で「New」をクリックして下さい。
レポジトリの作成画面が表示されます。レポジトリ名(「Repository name」)に任意の名前を入力し「Create repository」をクリックして下さい。
Git bashなどで以下コマンドを実行し、作成したリポジトリをローカルにクローン(ダウンロード)して下さい。
git clone https://github.com/[ユーザー名]/[リポジトリ名].git
※ユーザー名がuser、リポジトリ名が「test」であれば以下のようなコマンドになります。
git clone https://github.com/user/test.git
クローンしたローカルリポジトリ内に「.github/workflows」というフォルダを作成し、そのフォルダ内でさらに「test.yml」というファイルを作成して下さい。このtest.ymlがGitHub Actionsのworkflowになります。
※GitHub Actionsのworkflowは「.github/workflows」というディレクトリに保存します。
※workflowはYAML形式(.yml)で記述します。
次に、test.ymlを任意のテキストエディタで以下のように編集します。
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- run: echo "Hello World"
上記ファイルの意味は以下の通りです。
name: learn-github-actions | 「learn-github-actions」という名称のワークフローを作成する |
on: [push] | プッシュが実行された際に |
runs-on: ubuntu-latest | 最新バージョンのubuntu環境を準備し |
run: echo “Hello World” | echo “Hello World”というコマンドを実行する。 |
これで、GitHub Actionsのworkflowファイルが作成できました。ファイル作成後、以下の順番でファイルの追加、コミット、プッシュの作業を実行します。
git add .
git commit -m"[Add]test"
git push
上記プッシュが実行された時点で、workflowが実行されます。
実際にworkflowが実行されているか確認しましょう。GitHub管理画面から先程作成したリポジトリへ移動したあと、「Actions」メニューを開いてください。
GitHub Actionsの管理画面が表示されます。以下のようにgit commitで指定したコメント名で、GitHub Actionsのログが記録されているので、このログをクリックして表示して下さい。
次に、以下の順序でクリックして下さい。
以下のような画面が表示され、workflowで指定した通り「Run echo “Hello world!”」というコマンドが実行されたことを確認できます。
今回紹介した例をみてもわかるように、GitHub Actionsのworkflowでは、ubuntu環境を用意しubuntu内で様々なコマンドを実行することもできます。
まとめ
GitHub Actionsを使えば、Pushなどの操作をトリガーとして指定した処理を自動的に実行できます。GitHub ActionsによってCI/CDも実現可能です。
GitHub Actionsでは、GitHubが用意した仮想サーバーを利用できるため、ユーザー自身で個別に実行環境を用意・運用する必要はありません。またGitHub公式の機能であることから、GitHubと連携しやすい点も他のCI/CDツールにないメリットといえるでしょう。
GitHub Actionsはリリースノートの自動生成や、JavaScriptのLintをプッシュの都度に自動実行するなど、さまざまな用途で便利に使えます。一方、Freeプランでは同時実行できる最大ジョブ数が20までになるなど、制限がある点は注意しなくてはなりません。GitHub Actionsを使う際は、公式サイトにまとめられた利用規約を守る必要もあります。
KAGOYAのレンタルサーバ―はSSH機能を備えているため、Gitコマンドをご利用いただけます!
リーズナブルなプランからハイスペックなプランまで選択可能なため、事業用や練習用など用途に合わせて選ぶことができます。
【入門】GitHub からレンタルサーバーにコマンドひとつでアップする方法
Webサイトのコードや、WordPressの自作テーマ、カスタマイズしたテーマを GitHub で管理する場合、開発したソースコードを Webサーバーに公開する方法はいくつかあります。この記事では GitHub とレンタルサーバーを SSH 接続し、GitHub からレンタルサーバーへ Clone(Pull)することで公開する手順を解説します。 なお、GitHubについて詳しくは以下のページで解説…