Skip to main content

重複の回避

再利用可能なワークフローまたは複合アクションを使用して、ワークフローのコンテンツが重複しないようにすることができます。

再利用可能なワークフローと複合アクションについて

再利用可能なワークフローと複合アクションは、ワークフローのコンテンツが重複しないようにする 2 つの方法です。

再利用可能なワークフロー を使用すると、すべてのジョブとステップを含むワークフロー全体を再利用できます。 これは、複数のリポジトリ間で使用する完全な CI/CD プロセスがある場合に特に便利です。 再利用可能なワークフローは、1 つの場所で一元的に管理できますが、組織全体の多くのリポジトリで使用できます。

複合アクション を使用すると、複数のステップを 1 つのアクションにまとめることができます。 その後、このステップのバンドルをワークフロー内のシングル ステップとして実行できます。 これは、複数のワークフローで使用される一連の手順がある場合に便利です。 複合アクションを使用すると、長い YAML ワークフロー ファイルを大幅に縮小されたファイルにリファクタリングし、ワークフロー ファイル間でのコピーとペーストを回避することができます。

再利用可能なワークフローと複合アクションは同様の問題を解決しますが、いくつかの重要な違いがあります。 ほとんどの場合、どちらのソリューションでも使用できます。 ただし、この記事の後半で説明するように、一部の場合には片方のみを使用する必要があります。

再利用可能なワークフローと複合アクションを作成して使用する方法の詳細については、「ワークフローの再利用」と「複合アクションを作成する」を参照してください。

再利用可能なワークフローと複合アクションの比較

  • ワークフロー ジョブ - 複合アクションには、呼び出し元ワークフロー内でシングル ステップとして実行される一連のステップが含まれています。 再利用可能なワークフローとは異なり、ジョブを含めることはできません。
  • ログ - 複合アクションが実行されると、複合アクション内の個々のステップではなく、複合アクションを実行した呼び出し元ワークフローのステップだけがログに表示されます。 再利用可能なワークフローでは、すべてのジョブとステップが個別にログに記録されます。
  • ランナーの指定 - 再利用可能なワークフローには、1 つ以上のジョブが含まれます。 すべてのワークフロー ジョブと同様に、再利用可能なワークフロー内のジョブは、ジョブを実行するマシンの種類を指定します。 そのため、呼び出し元のワークフロー ジョブ用に選択したマシンとは異なる可能性があるマシンの種類でステップを実行する必要がある場合は、複合アクションではなく再利用可能なワークフローを使用する必要があります。
  • ステップへの出力の受け渡し - 複合アクションはワークフロー ジョブ内のステップとして実行され、複合アクションを実行するステップの前または後に複数のステップを持つことができます。 再利用可能なワークフローは、ジョブ ステップ内からではなく、ジョブ内で直接呼び出されます。 再利用可能なワークフローを呼び出した後でジョブにステップを追加することはできません。そのため、呼び出し元ワークフローの後続のジョブ ステップに値を渡すために GITHUB_ENV を使用することはできません。

再利用可能なワークフローと複合アクションの主な違い

再利用可能なワークフロー複合アクション
任意の標準ワークフロー ファイルによく似た YAML ファイルワークフロー ステップのバンドルを含むアクション
再利用可能な各ワークフローは、リポジトリの .github/workflows ディレクトリにある 1 つのファイル各複合アクションは個別のリポジトリまたはディレクトリで、action.yml ファイルと、必要に応じてその他のファイルも含む
特定の YAML ファイルを参照することで呼び出されるアクションが定義されているリポジトリまたはディレクトリを参照することで呼び出される
ステップからではなく、ジョブ内で直接呼び出されるジョブ内でステップとして実行する
複数のジョブを含めることができるジョブを含まない
各ステップはリアルタイムで記録される複数のステップが含まれている場合でも、1 つのステップとしてログに記録される
最大 4 つのレベルのワークフローを接続できる1 つのワークフローで最大 10 個の複合アクションを入れ子にすることができる
シークレットが使用できるシークレットが使用できない