GitHub Actionsとは
GitHub Actionsは、GitHubに組み込まれた強力な自動化プラットフォームであり、開発者がソフトウェア開発プロセスを効率化し最適化するためのツールです。この柔軟なツールを使用することで、継続的インテグレーション(CI)、継続的デプロイメント(CD)、テストなどの繰り返しタスクをリポジトリ内で直接自動化するカスタムワークフローを作成できます。
GitHub Actionsは、GitHubプラットフォームと連携するように設計されており、問題追跡、プルリクエスト、コードレビューなどのGitHubの他の機能と簡単に統合できます。
GitHub Actionsを利用することで、次のようなことが可能です。
- 繰り返しタスクを自動化することで時間を節約し、エラーを減らす
- CI/CDワークフローにより、ソフトウェア開発ライフサイクルを改善
- コードスタンダードやベストプラクティスを自動的に強制することで、コラボレーションやコード品質を向上させる
- Docker、Node.js、AWSなどのサードパーティーツールやサービスと統合する
- 特定のニーズに合わせてワークフローをカスタマイズし拡張する
GitHub Actionsのコンポーネント
GitHub Actionsの主要なコンポーネントには以下があります。
-
Event
GitHub Actionsワークフローをトリガーする特定のアクティビティです。リポジトリへのプッシュ、プルリクエスト、問題へのコメント、または定期的なインターバルなどがイベントの例です。 -
Job
ワークフロー内の同じランナー(仮想マシン)で実行される一連のタスクまたはステップです。ジョブは、依存関係に応じて順次または並列に実行できます。 -
Action
ジョブのステップとして使用できる再利用可能なコードの一部です。アクションは、自身、コミュニティ、またはGitHubによって作成されることができます。GitHub Marketplaceで見つけることができ、ワークフローに統合することができます。
リポジトリのセットアップ
GitHub Actionsを使用するには、リポジトリが正しく設定されている必要があります。次の手順に従ってセットアップを行ってください。
- 新しいGitHubリポジトリを作成するか、既存のリポジトリに移動
- リポジトリのルートディレクトリに
.github
フォルダがあることを確認。存在しない場合は作成。 .github
フォルダ内に、workflows
という新しいフォルダを作成。ここに全てのGitHub Actionsワークフローファイルを保存。
アクションの書き方
ワークフローファイルの構造
ワークフローは、YAML(Yet Another Markup Language)ファイルを使用して定義されます。これらのファイルは、リポジトリ内の.github/workflows
フォルダに保存されます。典型的なワークフローファイルには次の構成要素が含まれます。
-
Name
ワークフローの人間に読みやすい名前。 -
Triggers
ワークフローを開始するイベント(push、pull_request、scheduleなど)。 -
Jobs
ワークフローが実行するタスクのセット。 -
Steps
ジョブ内の個々のタスク。ステップは、事前定義されたアクションまたはカスタムスクリプトで構成される。
基本的な構文と構造
以下は、main
ブランチにpush
イベントが発生した場合に「Hello, World!」を出力する単純なワークフローファイルの例です。
name: My First Workflow
on:
push:
branches:
- main
jobs:
hello_world:
runs-on: ubuntu-latest
steps:
- name: Print message
run: echo "Hello, World!"
この例では、ワークフローはmain
ブランチにpush
イベントによってトリガーされます。ジョブhello_world
は、Ubuntuの最新バージョンで実行され、1つのステップがecho "Hello, World!"
コマンドを実行します。
事前定義されたアクションの使用
GitHub Actionsは、一般的なタスクを実行するための事前定義されたアクションを提供しています。これらのアクションは、GitHub Marketplaceで利用でき、わずか数行のYAMLでワークフローに追加できます。人気のある事前定義されたアクションには以下があります。
actions/checkout
: ランナーにリポジトリをチェックアウト。actions/setup-node
: Node.js環境をセットアップ。- `actions/cache: 依存関係やビルドアウトプットをキャッシュして、ワークフローの実行時間を短縮。
以下は、Node.js環境をセットアップし、依存関係をインストールし、テストを実行するワークフローの例です。
name: Node.js CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test
この例では、push
とpull_request
のイベントによってワークフローがトリガーされます。ジョブbuild
は、指定されたバージョンのNode.js環境をセットアップし、npm ci
とnpm test
コマンドを実行します。
価格
GitHub Actionsには、公開リポジトリ向けにリソースが制限された無料のティアがあり、プライベートリポジトリ向けには従量制のモデルがあります。
公開リポジトリでは、無制限の分数と20の同時ジョブを取得できます。
プライベートリポジトリでは、無料のティアで1ヶ月あたり2,000分と5つの同時ジョブが提供されます。アカウントタイプと使用状況に応じて、さまざまなレートで追加の分数やリソースを購入することができます。詳細な価格情報については、GitHub Actionsの価格ページを参照してください。
参考