リポジトリーを設定
テストを記述するにはTalend Cloud API Testerから生成されたJSONファイルが、そのテストを設定するにはpom.xmlがそれぞれ必要です。サンプルファイルはjenkins.zipアーカイブ内にあります。
POMファイル
POMファイルの設定は、JVM引数によってパラメーター化できます。
<file>${test_file}</file>
<accountId>${account_id}</accountId>
<variables>
<!-- The variable API_KEY's value will be overwritten with the JVM argument api_key -->
<property>
<name>API_KEY</name>
<value>${api_key}</value>
</property>
</variables>
ここでは、テストファイルがパラメーター化されていることを確認できます。これにより、テストを個別のファイルに配置し、Mavenコマンドでテストファイルを指定することによって個別にテストを呼び出すことができるようになります。
Account IDもパラメーター化されています。セキュリティ上の理由から、Account IDがGitHubリポジトリーにプッシュされないようにすることは非常に重要です。POMファイルとJenkinsファイルは両方ともパブリックGitHubリポジトリーにあるため、ビルドをパラメーター化し、Jenkinsの認証情報を使ってAccount IDを挿入する必要があります。
変数API_KEYは少し複雑です。JSONテストファイルのTalend Cloud API Tester環境の変数の1つになります。GitHubにプッシュされないようにする機密情報が含まれているため、ここで手動で上書きしています。つまり、ここでTalend Cloud API Testerでテストを実行するために有効な値を持つ環境と、機密データを手動で追加するCIの機密情報を含まない安全な環境を用意できます。
Jenkinsファイル
Jenkinsパイプラインはgroovyで書かれていますが、開発言語を知っている必要はありません。見れば分かるようになっています。
実行するパイプラインについて:
#!/usr/bin/env groovy
node {
stage('Checkout') {
checkout scm
}
stage('Build') {
echo 'Building and unit testing the API.'
// this step is faked
echo 'API built and unit-tested.'
}
stage('Deploy') {
echo 'Deploying the API.'
// this step is faked
echo 'API deployed.'
}
stage('Test') {
echo 'Testing the API with Talend Cloud API Tester Maven plugin'
withCredentials([
string(credentialsId: 'TALEND_ACCOUNT_ID', variable: 'TALEND_ACCOUNT_ID'),
string(credentialsId: 'CONTACTS_API_KEY', variable: 'CONTACTS_API_KEY')]) {
// Maven installation declared in the Jenkins "Global Tool Configuration"
withMaven(maven: 'Maven 3.5.0') {
sh "mvn clean test -B \
-Dapi_key=\"$CONTACTS_API_KEY\" \
-Dselected_environment='dev' \
-Dtest_file='src/test/resources/contacts_api_tests.json' \
-Daccount_id=\"$TALEND_ACCOUNT_ID\""
}
echo 'API tested.'
}
}
}
ここでのビルドおよびデプロイステージは本物ではありません。実際のビルドジョブでは、ビルドおよびデプロイコードをそこに配置します。このチュートリアルでは、テストフェーズについて説明します。
認証情報: テストステージでは、ブロックwithCredentialsを使ってAPIキーとTalend Account IDを取得し、同じ名前の変数に入れることができます。その後、JVM引数として再利用され、POMファイルのパラメーター化部分に値が提供されます。
Maven:withMavenブロックでは、Mavenの設定で先ほど設定した名前でMavenパスが取得されます。