Workato：Windows上のWorkato Connector SDK(SDK CLI)からWorkatoへカスタムコネクタをデプロイする

# はじめに

前回に続き、今回はWorkato Connector SDK(SDK CLI)でカスタムコネクタのデプロイまでの手順を説明します。

https://qiita.com/tabimoba/items/26da8410730fee14b84a

前回の手順でSDK CLIのインストールは完了し、Workatoのドキュメントを参考に手順を進めたけれどエラーになり、先に進めない（カスタムコネクタのデプロイができない）方の参考になれば幸いです。なお、今回の手順もWindowsをベースに進めていきます。

# 手順

::: note warn
この手順では具体的なカスタムコネクタの開発手順には触れません。
:::

## APIトークンの発行（Workato）
Workatoのワークスペースを開き、「Workspace admin」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b919e039-31e9-c355-c6a7-7bf44609f338.png)

続いて「API clients」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/3f4d41e6-475f-6783-2ac1-9ff819d880f8.png)

その後、各手順を進めます。

### ロール追加

「Client roles」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e841b6ae-8cbb-3904-881a-6de1efdf87c1.png)

「Add client role」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/84a51525-5992-c4e9-44c2-06bb8a7ac9e3.png)

ロールの名称を設定のうえ次の項目にチェックを追加し、「Save changes」をクリックします。

**Projects - Deployments & lifecycle**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/696390b4-f9de-2ab4-1ce5-5a3a35748095.png)

**Admin - Workspace collaborators**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/7c6afd43-39eb-5993-4e13-8ba3ec485ca6.png)

**Admin - Workspace details**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/60031b6a-eaaf-304a-662b-e02e91ca76d7.png)

### APIクライアント追加

「API clients」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/a0d02d8b-7a99-2b96-99a3-ca3401cbbf9b.png)

「Add client role」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/9b22dd5a-6ced-dbe3-1f9e-cb531a97d446.png)

以下の画面が表示されますので、次の通り設定を進めます。その後「Create client」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/d9593626-eb09-3576-79cf-38285580f4d1.png)

#### Name

任意の名称

#### Client role

上記「ロール追加」で追加したクライアントロールを指定

#### Environment access

Development

#### Project access

All projects

#### Allowed IPs

発行されるAPIトークンへのアクセスを自社に限定したい場合のみ設定


「Create client」クリック後次のモーダルが表示され、発行されたAPIトークンを確認することができます。なお、本画面の表示は一度のみであるため、モーダルを閉じる前に発行されたトークンをテキストエディタ等で記録してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/9e5fb6d5-9e97-a1e8-7e25-9af278fef88c.png)　


## 環境変数の設定（Windows）

スタートボタンをクリックし、検索ボックスに `env` と入力します。
その後、検索結果に「システム環境変数の編集」が表示されますので、クリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/fd7938b8-b460-9927-f949-c5b831477db4.png)

システムのプロパティが表示されますので、「環境変数」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b037d4d5-bc1a-6576-4f66-ed27e7a8f7dd.png)


ユーザー環境変数の「新規」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/167c98ec-f51a-5fc4-edd6-3c58acc333f7.png)

変数名と変数値をそれぞれ入力し、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/0afa7677-19b2-17a6-25b7-e20e177b349d.png)

なお、変数名と変数値はそれぞれ次の通り入力します。

| 変数名             | 変数値                         |
|:-------------------|:-------------------------------|
| WORKATO_BASE_URL   | ※1を参照                      |
| WORKATO_API_TOKEN  | Workatoより発行したAPIトークン |


※1 `WORKATO_BASE_URL` は、Workatoの契約に合わせて次より選択ください。

現在Workatoを契約される場合は、特別な事情が無い限りJPデータセンター契約となっています。なお、JPデータセンター開設前にWorkatoを契約したユーザーの場合は、USデータセンター契約となっている場合があります。いずれにも当てはまらない場合は、契約に合わせて適切なものを選択してください。


| データセンター                       | ベースURL                  |
|:-------------------------------------|:---------------------------|
| JP（日本）データセンター             | https://app.jp.workato.com    |
| US（米国）データセンター             | https://app.workato.com  |
| SG（シンガポール）データセンター     | https://app.sg.workato.com |
| EU（ヨーロッパ）データセンター       | https://app.eu.workato.com |
| AU（オーストラリア）データセンター   | https://app.eu.workato.com |

## プロジェクトの作成とカスタムコネクタのデプロイ（Windows）

### プロジェクト作成

最初にRubyの実行バージョンを2.7に変更します。手順については、以下を参照ください。

https://qiita.com/tabimoba/items/26da8410730fee14b84a#ruby%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%9227x%E3%81%AB%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88

次に、プロジェクトを管理するフォルダへ移動後に以下のコマンドを入力し、プロジェクトを作成します。
（`test-project` はプロジェクトに合わせて変更します）

```
workato new test-project
```

実行後に次のメッセージが表示され、選択が求められます。通常は1を選択します。

```
Please select default HTTP mocking behavior suitable for your project?

1 - secure. Cause an error to be raised for any unknown requests, all request recordings are encrypted.
            To record a new cassette you need set VCR_RECORD_MODE environment variable

            Example: VCR_RECORD_MODE=once bundle exec rspec spec/actions/test_action_spec.rb

2 - simple. Record new interaction if it is a new request, requests are stored as plain text and expose secret tokens.

Your choice:
```

なお、上記メッセージの詳細については、以下を参照ください。

https://docs.workato.com/developing-connectors/sdk/cli/guides/getting-started.html#step-2-create-a-new-connector-project

プロジェクトの作成が完了すると、次のメッセージが表示されます。

```
Bundle complete! 7 Gemfile dependencies, 59 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
The new Workato Custom Connector project created at test-project.

Now, edit the created file. Add actions, triggers or methods and generate tests for them

cd test-project && workato generate test
```

### コネクタの編集

プロジェクトフォルダへ移動し、 `connector.rb` を編集します。

プロジェクト作成直後に `connector.rb` を開くと、次のような内容となっています。

```ruby
{
  title: 'Test Project',

  connection: {
    authorization: {
      type: 'custom_auth'
    },

    base_uri: lambda do |connection|
      ''
    end
  },

  test: lambda do |connection|

  end,

  actions: {

  },

  triggers: {

  },

  methods: {

  },

  object_definitions: {

  },

  pick_lists: {

  }
}
```

まずは、 `title` をプロジェクトに合わせて変更します。
なお、今回はWorkatoへのカスタムコネクタのデプロイをゴールとしますので、具体的なコネクタの作成は行いません。

::: note alert
デプロイ後に `connector.rb` の `title` を変更すると、次回デプロイ時に新しいコネクタ（別コネクタ）としてデプロイが行われる、あるいは既存の同名のコネクタを上書きしてデプロイが行われます。後から `title` を変更する際はご注意ください。
:::

### コネクタのデプロイ

::: note alert
以下のコマンドでコネクタのデプロイを行うと、デプロイしたコード（バージョン）で直ちにカスタムコネクタがリリースされます。当該カスタムコネクタを実運用で利用していた場合、デプロイしたコードに不具合が混入していると不具合が生じ、障害の原因となる恐れがあります。このため、開発用と実運用のカスタムコネクタは分けて管理されることを強くお勧めします。
:::

プロジェクトのフォルダ上で、以下のコマンドを実行します。

```
workato push
```

リリースノートの入力を求められますので、適当な内容を入力します。

```
Please add release notes: initial commit
```

デプロイが完了すると、次のメッセージが表示されます。

```
Connector was successfully uploaded to https://app.workato.com
```

::: note warn
上記コマンド実行後に以下のエラーが表示された場合は、APIトークンが正しいことと、APIトークン（APIクライアント）に対するロールが正しく設定されていること（上記「ロール追加」の通り設定されていること）、環境変数が正しく設定されていることを確認してください。

```
401 Unauthorized
```
:::


## デプロイされたコネクタの確認（Workato）

デプロイされたコネクタは、APIトークンに対応するWorkatoのDevelopment環境上で確認することができます。

「Tools」-「Connector SDK」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/9751b67c-4143-3fdc-2a7f-5255e4ee1738.png)

デプロイされたコネクタを確認することができます。（コネクタの名称は、先に変更した`title`の値をもとに設定されます）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/c2be3cdf-9c8d-d6a3-df35-7236af0d898d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/4a8e88bc-e804-174a-7190-5235e0d595e3.png)


# 参考情報

https://docs.workato.com/developing-connectors/sdk/cli.html