GitHub Actionsにおけるアクションとは
GitHub Actionsのアクションは、ワークフローの一部として実行できる個々のタスクまたは操作です。アクションはワークフローの構成要素であり、様々な方法で組み合わせてプロジェクトのための複雑で効率的なパイプラインを作成することができます。複数のアクションを連鎖させることで、ビルド、テスト、コードのデプロイなどの複雑なプロセスを自動化することができます。
アクションの種類
ここでは、GitHub Actionsワークフローで使用できるさまざまなタイプのアクションについて説明します。
GitHub Marketplaceアクション
GitHub Marketplaceは、ワークフローに迅速に統合できるコミュニティ貢献のアクションを中心とした中央ハブです。
これらのアクションは、コードのリンティング、テスト、デプロイ、モニタリングなど、さまざまなユースケースをカバーしています。GitHub Marketplaceからアクションをワークフローに含めるには、次の構文を使用してワークフローファイルで参照する必要があります。
steps:
- name: My Step
uses: owner/repository@version
例えば、actions/checkout
アクションを使用する場合は、以下をワークフローファイルに含めます。
steps:
- name: Checkout code
uses: actions/checkout@v2
サードパーティのアクション
サードパーティのアクションは、GitHub Marketplaceにホストされていない外部の組織または個人によって開発されたアクションです。これらのアクションは通常、独自のリポジトリにホストされ、ワークフローファイルでリポジトリのURLを参照することでワークフローに含めることができます。
steps:
- name: My Step
uses: user/repo@version
サードパーティのアクションをプロジェクトで使用する前に、ドキュメントとコードを確認してサポートレベルやセキュリティ保証がGitHub Marketplaceのアクションと同じでない可能性があることを確認してください。
Docker Hubからのコンテナイメージ
Docker Hubからのコンテナイメージをワークフロー内でアクションとして利用することができます。特定の環境でアクションを実行する必要がある場合や、特定のツールセットを使用する必要がある場合に特に便利です。Docker Hubからコンテナイメージを使用するには、ワークフローファイルでイメージ名とバージョンを指定します。
steps:
- name: My Step
uses: docker://image-name:image-version
例えば、公式のPython 3.9イメージを使用してステップを実行するには、以下をワークフローファイルに含めます。
steps:
- name: Run Python script
uses: docker://python:3.9
with:
args: "python my-script.py"
独自のアクション
特定のプロジェクトのニーズに合わせたカスタムアクションが必要な場合は、独自のアクションを作成することができます。アクションは、任意のプログラミング言語で記述することができ、自分自身のリポジトリにホストするか、GitHub Marketplaceに公開することができます。独自のアクションを作成することで、機能と実装に完全な制御を与えることができます。
独自のアクションを作成するには、次の手順に従ってください。
- 新しいリポジトリをアクション用に作成
Dockerfile
またはaction.yml
ファイルを追加して、アクションのメタデータとエントリーポイントを定義- 選択したプログラミング言語でアクションのコードを記述
- コードをリポジトリにプッシュ
- ワークフローファイルでリポジトリのURLを参照してアクションを参照
例えば、my-org/my-action
というリポジトリでアクションを作成した場合、ワークフローファイルには次のように含めます。
steps:
- name: My Custom Action
uses: my-org/my-action@v1
人気のあるアクション
GitHub Actionsでもっとも人気があるアクションのうち、いくつかを紹介します。
- actions/checkout
actions/checkout
アクションは、リポジトリのコードをチェックアウトしてワークフローで使用可能にします。このアクションは、後続のステップでのコードベースへのアクセスを提供するため、ほとんどのワークフローの必須の開始点です。
steps:
- name: Checkout code
uses: actions/checkout@v2
- actions/setup-node
actions/setup-node
アクションは、ワークフロー内でNode.js環境を設定して、Node.jsスクリプトを実行したり、Node.jsベースのツールを使用したりすることができます。このアクションは、JavaScriptやTypeScriptのプロジェクトに特に便利です。
steps:
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: 14
- actions/cache
actions/cache
アクションは、依存関係とビルド出力をキャッシュして、ワークフローの実行時間を改善します。このアクションは、プロジェクトの要件に応じて特定のディレクトリやファイルをキャッシュするようにカスタマイズできます。
steps:
- name: Cache dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- actions/upload-artifact
actions/upload-artifact
アクションは、他のジョブで使用するためまたはストレージに使用するためにビルドアーティファクトをアップロードします。このアクションは、ビルド出力(コンパイルされたバイナリやテスト結果など)をジョブ間で共有するために役立ちます。
steps:
- name: Upload build artifacts
uses: actions/upload-artifact@v2
with:
name: my-artifact
path: build/output
- actions/download-artifact
actions/download-artifact
アクションは、ワークフロー内の以前のジョブからビルドアーティファクトをダウンロードします。このアクションは、actions/upload-artifact
アクションと組み合わせてビルド出力をジョブ間で共有するために通常使用されます。
steps:
- name: Download build artifacts
uses: actions/download-artifact@v2
with:
name: my-artifact
- codecov/codecov-action
codecov/codecov-action
アクションは、Codecovにコードカバレッジレポートをアップロードして解析やトラッキングを行うために使用されます。このアクションは、テストのコードカバレッジを監視し、コードベースが高いテストカバレッジを維持していることを確認するために役立ちます。
steps:
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/lcov.info
参考