概要
ワークフローでは、アクションと呼ばれる事前に記述されたレポート パーツを使用できます。 アクションは、ワークフロー内で特定のタスクを実行する、定義済みの再利用可能なジョブまたはコードのセットです。
アクションの種類は次のとおりです。
- 再利用可能: アクションはさまざまなワークフローとリポジトリで使用できるため、同じコードの書き換えを回避できます。
- 事前に記述: GitHub Marketplace には多くのアクションが用意されており、コードのチェックアウト、環境の設定、テストの実行、アプリケーションのデプロイなど、幅広いタスクをカバーしています。
- 構成可能: 入力、出力、環境変数を使用してアクションを構成し、特定のニーズに合わせて調整できます。
- コミュニティ主導: 独自のアクションを作成して他のユーザーと共有したり、コミュニティによって開発されたアクションを使用したりできます。
ワークフローで使用するアクションは、以下の場所で定義できます。
- ワークフロー ファイルと同じリポジトリ
- すべてのパブリック リポジトリ
- Docker Hubで公開された Docker コンテナイメージ
GitHub Marketplace は、GitHub コミュニティによって作成されたアクションを検索するための一元的な場所です。 GitHub Marketplace ページを使用すると、カテゴリ別にアクションをフィルター処理できます。
ワークフローエディタで Marketplace アクションを参照する
リポジトリのワークフローエディタで、直接アクションを検索し、ブラウズできます。 サイドバーから特定のアクションを検索し、注目のアクションを見て、注目のカテゴリをブラウズできます。 また、アクションがGitHubコミュニティから受けたStarの数も見ることができます。
- リポジトリで、編集したいワークフローファイルにアクセスします。
- ファイル ビューの右上隅の をクリックして、ワークフロー エディターを開きます。
- エディタの右側でGitHub Marketplaceサイドバーを使ってアクションをブラウズしてください。 バッジの付いたアクションは、GitHub がそのアクションの作者をパートナー組織として認証したことを示します。
ワークフローにアクションを追加する
ワークフロー ファイル内のアクションを参照することで、ワークフローにアクションを追加できます。
GitHub Actions ワークフローで参照されているアクションは、ワークフローを含むリポジトリの依存関係グラフで依存関係として表示できます。 詳細については、「依存関係グラフについて」を参照してください。
注: セキュリティを強化するため、GitHub Actions はアクションや再利用可能なワークフローのリダイレクトをサポートしません。 つまり、所有者、アクションのリポジトリの名前、またはアクションの名前が変更されると、そのアクションを以前の名前で使用するすべてのワークフローは失敗します。
GitHub Marketplace からのアクションの追加
アクションのリストのページには、アクションのバージョンと、そのアクションを利用するために必要なワークフローの構文が含まれています。 アクションが更新された場合でもワークフローを安定させるために、ワークフローファイルで Git または Docker タグ番号を指定することにより、使用するアクションのバージョンを参照できます。
- ワークフローで使いたいアクションにアクセスしてください。
- クリックすると、マーケットプレースに登録されているそのアクションの完全な情報を参照できます。
- [インストール] の下で、 をクリックしてワークフローの構文をコピーします。
- この構文をワークフロー中に新しいステップとして貼り付けてください。 詳しくは、「GitHub Actions のワークフロー構文」を参照してください。
- アクションで入力が必要な場合は、ワークフローで設定します。 アクションで必要な可能性がある入力について詳しくは、「ワークフローで事前に記述されたレポート パーツを使用する」をご覧ください。
ワークフローに追加したアクションに対してDependabot version updatesを有効化することもできます。 詳しくは、「Dependabot でアクションを最新に保つ」を参照してください。
同じリポジトリからのアクションの追加
ワークフロー ファイルがアクションを使用するのと同じリポジトリでアクションが定義されている場合、そのアクションはワークフロー ファイル内の {owner}/{repo}@{ref}
または ./path/to/dir
構文を使用して参照できます。
リポジトリ ファイル構造の例:
|-- hello-world (repository)
| |__ .github
| └── workflows
| └── my-first-workflow.yml
| └── actions
| |__ hello-world-action
| └── action.yml
パスはデフォルトの作業ディレクトリ (github.workspace
、$GITHUB_WORKSPACE
) に対する相対パス (./
) です。 アクションがワークフローとは異なる場所にリポジトリをチェックアウトする場合は、ローカル アクションに使用される相対パスを更新する必要があります。
ワークフロー ファイルの例:
jobs:
my_first_job:
runs-on: ubuntu-latest
steps:
# This step checks out a copy of your repository.
- name: My first step - check out repository
uses: actions/checkout@v4
# This step references the directory that contains the action.
- name: Use local hello-world-action
uses: ./.github/actions/hello-world-action
この action.yml
ファイルは、アクションのメタデータを提供するために使用されます。 このファイルの内容については、「GitHub Actions のメタデータ構文」をご覧ください。
別のリポジトリからのアクションの追加
アクションがワークフロー ファイルとは異なるリポジトリで定義されている場合は、ワークフロー ファイル内で {owner}/{repo}@{ref}
構文を使用してアクションを参照できます。
アクションはパブリック リポジトリに格納する必要があります.
jobs:
my_first_job:
steps:
- name: My first step
uses: actions/setup-node@v4
Docker Hubでのコンテナの参照
あるアクションが Docker Hub の公開された Docker コンテナー イメージで定義されている場合は、そのアクションはワークフロー ファイル内で docker://{image}:{tag}
構文を使用して参照する必要があります。 コードとデータを保護するには、ワークフローで使用する前に Docker HubからのDocker コンテナイメージの整合性を確認することを強くおすすめします。
jobs:
my_first_job:
steps:
- name: My first step
uses: docker://alpine:3.8
Docker アクションの例については、Docker-image.yml ワークフローと「Docker コンテナーのアクションを作成する」をご覧ください。
ワークフローでアクションを使用するためのセキュリティ強化
GitHubは、ワークフローのセキュリティを強化するために使用できるセキュリティ機能が用意されています。 GitHubのビルトイン機能を使用し、実行するアクションの脆弱性に関する通知を受け取ったり、ワークフロー内のアクションを最新の状態に保つプロセスを自動化したりできます。 詳しくは、「GitHub のセキュリティ機能を使用して GitHub Actions の使用をセキュリティで保護する」を参照してください。
カスタムアクションにリリース管理を使用する
コミュニティアクションの作者は、タグ、ブランチ、または SHA 値を使用してアクションのリリースを管理するオプションがあります。 他の依存関係と同様に、アクションの更新を自動的に受け入れる際のお好みに応じて、使用するアクションのバージョンを指定する必要があります。
ワークフローファイルでアクションのバージョンを指定します。 リリース管理へのアプローチに関する情報、および使用するタグ、ブランチ、または SHA 値を確認するには、アクションのドキュメントを確認してください。
注: サードパーティのアクションを使用する場合は、SHA 値を使用することをお勧めします。 ただし、Dependabot では、セマンティック バージョン管理を使用する脆弱な GitHub Actions に対してのみ Dependabot alerts が作成されることに注意してください。 詳細については、「GitHub Actions のセキュリティ強化」および「Dependabot アラートについて」を参照してください。
タグの使用
タグは、メジャーバージョンとマイナーバージョンの切り替えタイミングを決定するときに役立ちますが、これらはより一過性のものであり、メンテナから移動または削除される可能性があります。 この例では、v1.0.1
としてタグ付けされたアクションをターゲットにする方法を示しています。
steps:
- uses: actions/javascript-action@v1.0.1
SHA の使用
より信頼性の高いバージョン管理が必要な場合は、アクションのバージョンに関連付けられた SHA 値を使用する必要があります。 SHA は不変であるため、タグやブランチよりも信頼性が高くなります。 ただし、このアプローチは、重要なバグ修正やセキュリティ更新プログラムなどのアクションの更新を自動的に受信しないことを意味します。 短縮された値ではなく、コミットの完全な SHA 値を使う必要があります。 SHA を選択するときは、アクションのリポジトリからであり、リポジトリ フォークではないことを確認してください。 この例では、アクションの SHA をターゲットにしています。
steps:
- uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f
ブランチの使用
アクションのターゲットブランチを指定すると、そのブランチに現在あるバージョンが常に実行されます。 ブランチの更新に重大な変更が含まれている場合、このアプローチは問題を引き起こす可能性があります。 この例では、@main
という名前のブランチを対象とします。
steps:
- uses: actions/javascript-action@main
詳しくは、「カスタム アクションについて」を参照してください。
アクションで入力と出力を使用する
多くの場合、アクションは入力を受け入れたり要求したりして、使用できる出力を生成します。 たとえば、アクションでは、ファイルへのパス、ラベルの名前、またはアクション処理の一部として使用するその他のデータを指定する必要がある場合があります。
アクションの入力と出力を確認するには、リポジトリのルート ディレクトリの action.yml
または action.yaml
を確認します。
この action.yml
の例では、inputs
キーワードによって file-path
という名前の必須の入力が定義され、何も指定されていない場合に使用される既定値が含まれています。 outputs
キーワードは、結果を配置する場所を示す results-file
という名前の出力を定義します。
name: "Example"
description: "Receives file and generates output"
inputs:
file-path: # id of input
description: "Path to test script"
required: true
default: "test-file.js"
outputs:
results-file: # id of output
description: "Path to results file"
次のステップ
GitHub Actions についてさらに学ぶには、「GitHub Actions を理解する」をご覧ください。