# Jenkins CIによるワークフローの継続的デプロイ

Treasure ワークフローは、[Git](https://git-scm.com/)などのバージョン管理ツールや[Jenkins CI](https://jenkins.io/)などの継続的インテグレーションツールと一緒に使用できます。GitHubとJenkins CIを使用して継続的デプロイパイプラインを設定できます。

## 前提条件

このチュートリアルには以下が必要です：

* Treasure ワークフロー
* [GitHub](https://github.com/)アカウント
* [Jenkins CI](https://jenkins.io/)アカウント
* JenkinsサーバーへのDigdagのインストール。Digdag [Getting Started](https://docs.digdag.io/getting_started.html#downloading-the-latest-version)を参照してください。


## GitHubリポジトリ

まだ行っていない場合は、ワークフロープロジェクトを含むGitリポジトリをGitHubに作成してください。GitとGitHubの使用方法の詳細については、[GitHub Bootcamp](https://help.github.com/categories/bootcamp/)を参照してください。

## Jenkins CIの設定

JenkinsとGitHubの使用方法の詳細については、[Jenkinsドキュメント](https://jenkins.io/doc/tutorials/)を参照してください。

Jenkins設定の詳細については、[Jenkins設定ドキュメント](https://jenkins.io/doc/book/using/)を参照してください。

プロジェクトにJenkins CI設定ファイルを追加します。ファイルは`Jenkinsfile`という名前で、プロジェクトのトップディレクトリに配置し、以下の内容を含める必要があります。その後、コミットしてGitHubにプッシュしてください。

```jenkins
pipeline {
    agent { label 'master' }
    environment {
        TD_API_KEY = credentials('TD_API_KEY')
    }
    stages {
        stage('build') {
            steps {
                dir ('<workflow directory>') {
                    sh "td -e https://api.treasuredata.com wf push <workflow project name>"
                }
            }
        }
    }
}
```

### TD認証情報の設定

ワークフローをTreasure Dataにプッシュするには、プロジェクト用のTreasure APIキーを設定する必要があります。

1. Jenkinsダッシュボードを開きます。
2. 左側のメインメニューから「Credentials」を選択します。


![](/assets/image-20190830-212032.ca19994b7ea5bca49042e14504754ba3a46234f2ea02a1010fe33cfe2e039f67.2e4f387b.png)

1. APIキーをグローバル認証情報として追加する場合は、Credentialsの下でSYSTEMを選択します。
2. メイン中央メニューからGlobal credentials (unrestricted)を選択します。
3. Add Credentialsを選択します。


![](/assets/image-20190830-211949.ccf6daa65e7e79b63577a28fcc5f20090323626861d6c10c4cf5706f1540ff19.2e4f387b.png)

1. Kindの下にある中央のドロップダウンメニューから、Secret Textを選択します。


![](/assets/image-20190830-211921.3c7f5484bbe49a9e31f4cf5ffaec9d75b7e53510f34d40c47985915a08189552.2e4f387b.png)
7. すべての子アイテムでAPIキーを利用可能にするには、Globalスコープを選択します。

1. 実装の詳細に応じて、GlobalまたはSystemを選択します。
2. Secretフィールドに`TD_API_KEY`を入力し、IDフィールドにこの認証情報に使用する名前を入力します。
3. Save variablesを選択します。


### デプロイの開始

1. Jenkinsダッシュボードを再度開き、ワークフロープロジェクトのビルドを選択します。
2. Build NOWを選択してワークフローを開始します。


JenkinsはワークフローをTreasure Dataにプッシュし、GitHubに変更をプッシュするたびにこれを実行します。

## トラブルシューティング

* 以下のエラーが表示された場合は、エンドポイントにhttps://を追加してください。


`error: RESTEASY004655: Unable to invoke request (processing)`