---
title: コンテンツの更新時にGitHub Actionsを自動実行する
description: このチュートリアルでは、コンテンツの更新時に GitHub Actionsを自動実行する方法を説明します
---

## 概要

このチュートリアルでは、コンテンツの更新時に GitHub Actionsを自動実行する方法を説明します。  
手動でコンテンツを更新した場合のほか、承認ワークフローを利用した場合とAPIを使用してコンテンツを更新した場合についても説明します。

### 学べること

コンテンツの更新時にGitHub Actionsを実行方法を学びます。
流れは以下の通りです。

- [GitHub Workflowの設定](#github-workflowの設定)
- [GitHub Actionsを使用してコンテンツを作成する](#github-actionsを使用してコンテンツを作成する)
- [承認ワークフローを使用してコンテンツを作成する](#承認ワークフローを使用してコンテンツを作成する)
- [APIを使用してコンテンツを作成する](#apiを使用してコンテンツを作成する)

### 前提条件

:::info
このページはKurocoとNuxt.jsでのプロジェクトが構築済みであり、コンテンツ一覧のページが作成されていることを前提としています。  
まだ構築していない場合は、下記のチュートリアルを参照してください。  
[Kurocoビギナーズガイド](/ja/docs/tutorials/beginners-guide/)  
[KurocoとNuxt.jsで、コンテンツ一覧ページを作成する](/ja/docs/tutorials/integrate-kuroco-with-nuxt/)
:::

## GitHub Workflowの設定

GitHubと接続し、リポジトリを設定すると、GitHubの設定画面は以下のようになります。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e7ded27bac16b51557d16fb6fb48ab05.png)

:::caution
GitHub Actionsを実行するには、Kuroco管理画面のGitHubページでワークフローを設定する必要があります。設定されていない場合、コンテンツ更新時にワークフロー連携を有効にしていてもGitHub Actionsが実行されません。
:::

ここでワークフローと対象ブランチを設定する必要があります。GitHubリポジトリに基づいて対応する項目を選択し、[更新する]をクリックしてください。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/6f41aa26f859467a8e67b710e1a2e43f.png)

## GitHub Actionsを使用してコンテンツを作成する

[コンテンツ] -> [コンテンツ名] に移動して、[追加] をクリックして新しいコンテンツを作成します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/987c09c2f1363fe7d2411886e21376b9.png)

ワークフローを「有効」にします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/bdba30d223ad5de9454e2b64632b4fc9.png)

ワークフローを「有効」に設定してコンテンツを追加または更新すると、自動でGitHub Actionsが実行されます。 

![Image from Gyazo](https://t.gyazo.com/teams/diverta/60e4abe78c8d71a89b74646a9e72bbd4.png)

ワークフローの設定を有効にして更新すると、次回更新時にもワークフローの設定はデフォルトで有効がチェックされた状態になります。  

## 承認ワークフローを使用してコンテンツを作成する

GitHub Actionsは、コンテンツが更新されたときに自動的に実行されます。  
承認ワークフローがそのコンテンツに設定されている場合は、すべてのグループが承認し、コンテンツが公開/更新されたときにGitHub Actionsが実行されます。

### 1. 承認ワークフローの作成

承認ワークフローを作成するには、サイドメニューで[オペレーション] -> [承認ワークフロー]に遷移します。ここで新しいワークフローを追加するか、既に作成されている場合は編集します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/0a132100af44a2955c9ceb3442023820.png)

必要な情報を入力し、承認ワークフローを作成してください。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/91c321d5619a3a731cb5131c4234b4f0.png)

### 2. フロー設定をする
コンテンツの作成/更新から公開までのフロー設定をします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/4b18e4bbbafb733a984722690d84a601.png)

フロー設定が完了したら、コンテンツの編集にすすみます。

### 3. 新しいトピックを作成する
[コンテンツ] > [コンテンツ名] に移動して、[追加] をクリックして新しいコンテンツを作成します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/987c09c2f1363fe7d2411886e21376b9.png)

### 4. GitHubワークフローと承認ワークフローを設定する
コンテンツが公開された後にGitHub Actionsが実行されるようGitHubのワークフロー設定を有効にします。承認ワークフローの設定も合わせて実施します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e6562c353f237e1c77a1de0d28b580cb.png)

### 5. コンテンツを更新する

コンテンツに承認フローワークフローが設定されている場合は承認待ちに移行します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/99f4b777dbc39cafd0a7b2c385f7fac5.png)

### 6. GitHub Actionsが実行されることを確認する
Contentの設定後、GitHubアクションが実行されます。 GitHub の [アクション] タブで確認できます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/a18df754f1bf9dc9e91f810353bdc2eb.png)  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/6c6b814bb31224e4d6284d910ca9284a.png)

## APIを使用してコンテンツを作成する

API経由でコンテンツが更新された場合でもGitHubアクションを実行するように設定できます。このチュートリアルでは簡単化のため、承認フローを使用せずにContents APIを使用します。

承認フローを使用したコンテンツの追加方法については、[こちら](/ja/docs/faq/can-i-add-or-update-workflow-content-via-api/)を参照してください。

### 1. コンテンツ挿入APIの作成

サイドメニューからエンドポイント一覧のページに遷移します。追加をクリックし、以下のエンドポイントを追加します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/85123322a06e5b32aed42bdfb635bea8.png)

| 設定 | 値 |
| :--- | :--- |
| パス | エンドポイントのパス。必要に応じて入力してください。 |
| カテゴリー  | 「コンテンツ」を選択します。 |
| モデル     | Topics　v1 |
| オペレーション | コンテンツで実行する操作を選択します。(insert or update) |
| topics_group_id   | コンテンツ定義IDを入力します。|


### 2. リクエストを送信する

エンドポイントの動作はSwagger UIで確認します。  
新しく作成したエンドポイントを選択して、[Try it out]をクリックします。  
ここで、`dispatch_github_workflow`を1で渡すと、コンテンツが公開されたときにGitHub Actionsが実行されます。

承認ワークフローが使用されている場合、GitHub Actionsは承認ワークフローが完了した後に実行されます。
また、コンテンツが非公開に設定された場合や、後日公開されるように日時指定がされた場合、GitHub Actionsはコンテンツが公開されたときに実行されます。

このチュートリアルでは簡単化のため、`open_flg`を1で渡し、コンテンツを挿入するとすぐに公開されるようにします。これにより、コンテンツの追加時にすぐにGitHub Actionsが実行されます。  

コンテンツの内容を入力し、[Execute]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/674a4ea57daea71d92b736b27751d57a.png)

レスポンスでコンテンツが正常に追加されたことを確認します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/1af8abff8a5c887f3a56fb888073b6b2.png)

コンテンツ一覧に遷移し、コンテンツが追加されていることを確認します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f7752d7f18a4a9a471183c78067a2e00.png)

### 3. GitHub Actionsの実行を確認する

GitHubリポジトリのActionsタブに遷移すると、GitHub Actionsが実行されたことを確認できます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/8058a89201a49bd18fb1a21a6a7a0ac2.png)
