Traffine I/O

日本語

2023-03-04

GitHub Actionsにおけるアクション

GitHub Actionsにおけるアクションとは

GitHub Actionsのアクションは、ワークフローの一部として実行できる個々のタスクまたは操作です。アクションはワークフローの構成要素であり、様々な方法で組み合わせてプロジェクトのための複雑で効率的なパイプラインを作成することができます。複数のアクションを連鎖させることで、ビルド、テスト、コードのデプロイなどの複雑なプロセスを自動化することができます。

アクションの種類

ここでは、GitHub Actionsワークフローで使用できるさまざまなタイプのアクションについて説明します。

GitHub Marketplaceアクション

GitHub Marketplaceは、ワークフローに迅速に統合できるコミュニティ貢献のアクションを中心とした中央ハブです。

https://github.com/marketplace?type=

これらのアクションは、コードのリンティング、テスト、デプロイ、モニタリングなど、さまざまなユースケースをカバーしています。GitHub Marketplaceからアクションをワークフローに含めるには、以下の構文を使用してワークフローファイルで参照する必要があります。

yaml
steps:
  - name: My Step
    uses: owner/repository@version

例えば、actions/checkoutアクションを使用する場合は、以下をワークフローファイルに含めます。

yaml
steps:
  - name: Checkout code
    uses: actions/checkout@v2

サードパーティのアクション

サードパーティのアクションは、GitHub Marketplaceにホストされていない外部の組織または個人によって開発されたアクションです。これらのアクションは通常、独自のリポジトリにホストされ、ワークフローファイルでリポジトリのURLを参照することでワークフローに含めることができます。

yaml
steps:
  - name: My Step
    uses: user/repo@version

サードパーティのアクションをプロジェクトで使用する前に、ドキュメントとコードを確認してサポートレベルやセキュリティ保証がGitHub Marketplaceのアクションと同じでない可能性があることを確認してください。

Docker Hubからのコンテナイメージ

Docker Hubからのコンテナイメージをワークフロー内でアクションとして利用することができます。特定の環境でアクションを実行する必要がある場合や、特定のツールセットを使用する必要がある場合に特に便利です。Docker Hubからコンテナイメージを使用するには、ワークフローファイルでイメージ名とバージョンを指定します。

yaml
steps:
  - name: My Step
    uses: docker://image-name:image-version

例えば、公式のPython 3.9イメージを使用してステップを実行するには、以下をワークフローファイルに含めます。

yaml
steps:
  - name: Run Python script
    uses: docker://python:3.9
    with:
      args: "python my-script.py"

独自のアクション

特定のプロジェクトのニーズに合わせたカスタムアクションが必要な場合は、独自のアクションを作成することができます。アクションは、任意のプログラミング言語で記述することができ、自分自身のリポジトリにホストするか、GitHub Marketplaceに公開することができます。独自のアクションを作成することで、機能と実装に完全な制御を与えることができます。

独自のアクションを作成するには、以下の手順に従ってください。

  1. 新しいリポジトリをアクション用に作成
  2. Dockerfileまたはaction.ymlファイルを追加して、アクションのメタデータとエントリーポイントを定義
  3. 選択したプログラミング言語でアクションのコードを記述
  4. コードをリポジトリにプッシュ
  5. ワークフローファイルでリポジトリのURLを参照してアクションを参照

例えば、my-org/my-actionというリポジトリでアクションを作成した場合、ワークフローファイルには以下のように含めます。

yaml
steps:
  - name: My Custom Action
    uses: my-org/my-action@v1

人気のあるアクション

GitHub Actionsでもっとも人気があるアクションのうち、いくつかを紹介します。

  • actions/checkout
    actions/checkoutアクションは、リポジトリのコードをチェックアウトしてワークフローで使用可能にします。このアクションは、後続のステップでのコードベースへのアクセスを提供するため、ほとんどのワークフローの必須の開始点です。
yaml
steps:
  - name: Checkout code
    uses: actions/checkout@v2
  • actions/setup-node
    actions/setup-nodeアクションは、ワークフロー内でNode.js環境を設定して、Node.jsスクリプトを実行したり、Node.jsベースのツールを使用したりすることができます。このアクションは、JavaScriptやTypeScriptのプロジェクトに特に便利です。
yaml
steps:
  - name: Set up Node.js
    uses: actions/setup-node@v2
    with:
      node-version: 14
  • actions/cache
    actions/cacheアクションは、依存関係とビルド出力をキャッシュして、ワークフローの実行時間を改善します。このアクションは、プロジェクトの要件に応じて特定のディレクトリやファイルをキャッシュするようにカスタマイズできます。
yaml
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アクションは、他のジョブで使用するためまたはストレージに使用するためにビルドアーティファクトをアップロードします。このアクションは、ビルド出力(コンパイルされたバイナリやテスト結果など)をジョブ間で共有するために役立ちます。
yaml
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アクションと組み合わせてビルド出力をジョブ間で共有するために通常使用されます。
yaml
steps:
  - name: Download build artifacts
    uses: actions/download-artifact@v2
    with:
      name: my-artifact
  • codecov/codecov-action
    codecov/codecov-actionアクションは、Codecovにコードカバレッジレポートをアップロードして解析やトラッキングを行うために使用されます。このアクションは、テストのコードカバレッジを監視し、コードベースが高いテストカバレッジを維持していることを確認するために役立ちます。
yaml
steps:
  - name: Upload coverage to Codecov
    uses: codecov/codecov-action@v1
    with:
      token: ${{ secrets.CODECOV_TOKEN }}
      file: ./coverage/lcov.info

参考

https://docs.github.com/en/actions

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!