GitHub Actionsをもっと使いやすく！ workflow_dispatchことはじめ

## 要約

```yaml:GitHub_Actions-workflow_dispatch
on:
  workflow_dispatch:
    inputs:  # オプション項目
      piyopiyo:
        description: "hogehoge"
        required: true
        default: fugafuga
```

## 待望の新機能 workflow_dispatch とは？

2020/07/06 に待望の機能、 workflow_dispatch がリリースされました！
GitHub Actions で設定したワークフローを好きな時に実行できるイベントです。

[GitHub Actions: Manual triggers with workflow_dispatch](https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/)

[Events that trigger workflows#workflow_dispatch](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events)

### なにが嬉しいのか

それまでは「任意タイミングでの実行」ができなかったんですよね。
どうしてもGitHub上のイベントのいずれかをトリガーにする必要がありました。

なので、ワークフローを実行するためには、
デプロイのためだけのPRを作成したりとか、
コメントの投稿をトリガーにしてワークフローを実行したりとか……手間でした。

## 使ってみましょう！ 設定編

では、workflowのファイルを編集して、workflow_dispatch を使えるようにしましょう。

```yaml:GitHub_Actions-workflow_file
on:
  workflow_dispatch:

# jobs以降は省略
```

はい、これで使えるようになりました！　簡単ですね。
デフォルトブランチにこの workflow が反映されれば workflow_dispatch が使えます。

inputs はオプションになります。

## 使ってみましょう！ 実行編

1. GitHubのリポジトリをブラウザで開きます
2. Actionsタブを選択します
3. workflow_dispatch を設定した workflowを選択しましょう
  <img width="1303" alt="select workflow.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298098/5a5df009-0aaa-fb9b-ddbb-48fff60adcea.png">
4. [Run workflow] のプルダウンボタンをクリックします
5. プルダウン内の [Run workflow] ボタンをクリックします
  <img width="359" alt="run workflow.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298098/8e244e9d-12eb-59ea-8e51-c8900244b589.png">

実行ブランチは自由に選択可能です
<img width="359" alt="select branch.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298098/e281d530-edfd-98e7-14e0-c5ecfc79ce45.png">


## inputsを使う

workflow_dispatch 実行時に、任意の文字列を入力できます。
入力した文字はワークフロー内で利用することが可能です。
最大10項目まで設定できます。

### inputsの設定方法

```yaml:GitHub_Actions-workflow_dispatch
on:
  workflow_dispatch:
    inputs:
      piyopiyo:
        description: "hogehoge"
        required: true
        default: hugahuga
```

### inputsの利用方法

ワークフローのスクリプト内では、以下のようにして利用が可能です。

```yaml:use_input
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: check inputs
        run: echo "${{ github.event.inputs.piyopiyo }}"
```

[actions/github-script](https://github.com/actions/github-script) の中でも利用することができます

```yaml:use_input
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: use inputs in script
        uses: actions/github-script@v2
        id: use-inputs
        with:
          result-encoding: string
          script: |
            return context.payload.inputs.piyopiyo
```

### inputsがある場合の入力項目

inputsがある場合 [Run workflow] のプルダウンは次のようになります。
<img width="359" alt="set inputs.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298098/42224eda-2115-2749-2aaa-04d9c5a97a35.png">

## 参考

- [GitHub Actionsの手動実行 workflow_dispatchを試す](https://swfz.hatenablog.com/entry/2020/07/10/201136)
- [Configuring a workflow - Manually running a workflow](https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#manually-running-a-workflow)
- [Events that trigger workflows - Manual events](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events)
- [Create a workflow dispatch event](https://docs.github.com/en/rest/reference/actions#create-a-workflow-dispatch-event)

以上です。
指摘や、追加の情報があればコメントをいただけると幸いです！