# GitHub Actionsについて

GitHub Actionsの主要概念と基本的な用語の基本について説明します。

> \[!NOTE]
> GitHub Enterprise Server ホステッド ランナーは、現在 GitHub ではサポートされていません。

## 概要

GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる継続的インテグレーションと継続的デリバリー (CI/CD) のプラットフォームです。 リポジトリに対するすべてのプル要求をビルドしてテストするワークフローを作成したり、マージされたプル要求を運用環境にデプロイしたりできます。

GitHub Actions は DevOps だけでなく、リポジトリ内で他のイベントが発生したときにワークフローを実行できます。 たとえば、リポジトリで新しい issue が作成されるたびに、適切なラベルを自動的に追加するワークフローを実行できます。

お使いの GitHub Enterprise Server インスタンスのワークフローを実行するには、独自の Linux、Windows、または macOS 仮想マシンをホストする必要があります。

企業への GitHub Actions の導入の詳細については、 [企業向けGitHub Actionsの導入](/ja/enterprise-server@3.22/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise) を参照してください。

## GitHub Actionsのコンポーネント

プル要求が開かれている、作成中の問題など、リポジトリでGitHub Actionsが発生したときにトリガーされる\*\*\*\***ワークフロー**を構成できます。 ワークフローには、1 つ以上の **ジョブ** が含まれており、ジョブは順次にまたは並列で実行できます。 各ジョブは、専用の仮想マシン **ランナー** 内、またはコンテナー内で実行され、定義した **スクリプト** を実行するか、または **アクション** (ワークフローを簡略化できる再利用可能な拡張機能) を実行する 1 つ以上のステップで構成されます。

![ランナー 1 をトリガーしてジョブ 1 を実行し、それによってランナー 2 がジョブ 2 の実行をトリガーするイベントの図。 各ジョブは複数のステップに分割されています。](/assets/images/help/actions/overview-actions-simple.png)

### ワークフロー

**ワークフロー**とは、1 つ以上のジョブを実行する構成可能な自動化プロセスです。 ワークフローは、リポジトリにチェックインされる YAML ファイルによって定義され、リポジトリ内のイベントによってトリガーされたときに実行されます。また、手動でトリガーしたり、定義されたスケジュールでトリガーしたりすることもできます。

ワークフローは、リポジトリ内の `.github/workflows` ディレクトリで定義されます。 1 つのリポジトリで複数のワークフローを使用でき、それぞれで次のような異なるタスクのセットを実行できます。

* Pull request のビルドとテスト
* リリースが作成される度にアプリケーションを配置する
* 新しい issue が開かれる度にラベルを追加する

別のワークフロー内のワークフローを参照できます。 詳しくは、「[ワークフローを再利用する](/ja/enterprise-server@3.22/actions/how-tos/reuse-automations/reuse-workflows)」をご覧ください。

詳しくは、「[ワークフローの書き込み](/ja/enterprise-server@3.22/actions/how-tos/write-workflows)」をご覧ください。

### イベント

**イベント**とは、**ワークフロー**実行をトリガーする、リポジトリ内の特定のアクティビティです。 たとえば、アクティビティは、誰かが pull request を作成したり、問題を開いたり、リポジトリにコミットをプッシュしたりしたときに、 GitHub から発生する可能性があります。 また、[\[スケジュール\]](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule) に従って、[\[REST API に投稿\]](/ja/enterprise-server@3.22/rest/repos/repos#create-a-repository-dispatch-event) または手動で、ワークフロー実行を作動させることもできます。

ワークフローのトリガーに使用できるイベントの完全な一覧については、「[ワークフローをトリガーするイベント](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows)」を参照してください。

### ジョブ

**ジョブ**とは、同じ**ランナー**で実行される、ワークフロー内の一連の**ステップ**です。 各ステップは、実行されるシェル スクリプト、または実行される **アクション** のいずれかです。 ステップは順番に実行され、相互に依存します。 各ステップは同じランナーで実行されるため、あるステップから別のステップにデータを共有できます。 たとえば、アプリケーションをビルドするステップの後に、ビルドされたアプリケーションをテストするステップを続けることができます。

ジョブと他のジョブとの依存関係を構成できます。既定では、ジョブに依存関係はなく、並列で実行されます。 ジョブが別のジョブに依存している場合、そのジョブは、依存しているジョブが完了するまで待機してから実行されます。

また、**マトリックス**を使用すると、オペレーティング システムや言語のバージョンなど、変数の組み合わせをそれぞれ変えて同じジョブを複数回実行することもできます。

たとえば、ジョブに依存していないさまざまなアーキテクチャ用の複数のビルド ジョブと、それらのビルドに依存するパッケージ化ジョブを設定するとします。 ビルド ジョブは並列で実行され、それらがすべて正常に完了したら、パッケージ化ジョブが実行されます。

詳しくは、「[ワークフローの目的を選択](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do)」をご覧ください。

### アクション

**アクション**は、**ワークフロー**内で特定のタスクを実行する、再利用可能な定義済みジョブまたはコードのセットです。これによりワークフロー ファイルに記述する繰り返しコードの量を減らすことができます。 アクションは、次のようなタスクを実行することができます。

* Git リポジトリ GitHub からプルする
* ビルド環境のツールチェーンの設定
* クラウド プロバイダーに対する認証の設定

独自のアクションを記述することも、 GitHub Marketplaceのワークフローで使用するアクションを見つけることができます。

アクションを公開せずに企業全体でアクションを共有するには、アクションを内部リポジトリに格納し、同じ組織または企業内の任意の組織が所有する他のリポジトリの GitHub Actions ワークフローへのアクセスを許可するようにリポジトリを構成します。 詳しくは、「[アクションとワークフローを企業と共有する](/ja/enterprise-server@3.22/actions/how-tos/reuse-automations/share-with-your-enterprise)」をご覧ください。

アクションの詳細については、「[自動化の再利用](/ja/enterprise-server@3.22/actions/how-tos/reuse-automations)」を参照してください。

### ランナー

**ランナー**とは、ワークフローがトリガーされると実行されるサーバーです。 各ランナーは一度に 1 つの**ジョブ**を実行できます。

あなたはGitHub Enterprise Serverのために独自のランナーをホストする必要があります。

セルフホスト ランナーの詳細については[セルフホステッド ランナーの管理](/ja/enterprise-server@3.22/actions/how-tos/manage-runners/self-hosted-runners) をご参照ください。

## 次のステップ

GitHub Actions は、アプリケーション開発プロセスのほぼすべての側面を自動化するのに役立ちます。 使い始める準備はできていますか。
GitHub Actionsで次の手順を実行するために役立つリソースを次に示します。

* GitHub Actionsワークフローを作成するには、「[ワークフロー テンプレートの使用](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/use-workflow-templates)」を参照してください。
* 継続的インテグレーション (CI) ワークフローについては、「[コードのビルドとテスト](/ja/enterprise-server@3.22/actions/tutorials/build-and-test-code)」を参照してください。
* パッケージのビルドと公開については、「[パッケージを公開する](/ja/enterprise-server@3.22/actions/tutorials/publish-packages)」を参照してください。
* プロジェクトの配置については、「[サード パーティ製プラットフォームへのデプロイ](/ja/enterprise-server@3.22/actions/how-tos/deploy/deploy-to-third-party-platforms)」を参照してください。
* GitHubでのタスクとプロセスの自動化については、[GitHub Actions を使って作業を管理する](/ja/enterprise-server@3.22/actions/tutorials/manage-your-work) を参照してください。
* GitHub Actionsのより複雑な機能を示す例については、[AUTOTITLE を](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do)参照してください。 これらの詳細な例では、ランナーでコードをテストし、 GitHub CLI にアクセスし、コンカレンシーやテスト マトリックスなどの高度な機能を使用する方法について説明します。

## 参考資料

* [企業向けGitHub Actionsについて](/ja/enterprise-server@3.22/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)