Configurer le dépôt
Vous avez besoin d'un fichier JSON généré à partir de Talend Cloud API Tester pour décrire vos tests et d'un fichier pom.xml pour les configurer. Vous pouvez trouver des fichiers d'exemple dans l'archive jenkins.zip.
Le fichier POM
La configuration du fichier POM peut être paramétrée par des arguments 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>
Vous pouvez voir ici que le fichier de test est paramétré, cela vous permet de placer vos tests dans des fichiers séparés et d'appeler les tests individuellement en spécifiant le fichier de test dans la commande Maven.
L'ID du compte a également été paramétrée. Il est très important, pour des raisons de sécurité, que l'ID du compte ne soit pas poussé sur un dépôt GitHub. Les fichiers POM et Jenkinsfile se trouvent dans votre dépôt GitHub, vous devez donc paramétrer le build et injecter l'ID du compte ici par le biais d'informations d'identification Jenkins.
La variable API_KEY est un peu plus complexe. C'est l'une des variables de votre environnement Talend Cloud API Tester dans le fichier de test JSON. Celle-ci a été écrasée manuellement ici car elle contient des informations sensibles que vous ne souhaitez pas pousser sur GitHub. Cela signifie que vous pouvez avoir des environnements avec une valeur valide ici pour exécuter les tests dans Talend Cloud API Tester et un environnement sécurisé sans informations sensibles pour l'Intégration Continue dans lequel vous ajoutez manuellement les données sensibles.
Le fichier Jenkinsfile
Les pipelines Jenkins sont rédigés en Groovy mais il n'est pas nécessaire de connaître le language pour les créer, ils sont assez descriptifs.
Voici le pipeline que vous allez exécuter :
#!/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.'
}
}
}
Les étapes de build et de déploiement sont simulées ici. Dans une situation réelle, le code de votre build et de déploiement se trouvent ici. Ce tutoriel concerne la phase de test.
Credentials : lors de l'étape de test, le bloc withCredentials est utilisé pour récupérer la clé API et l'ID du compte Talend puis les mettre dans des variables de même nom. Ils sont ensuite réutilisés comme arguments JVM pour fournir des valeurs à la partie paramétrée du fichier POM.
Maven : le bloc withMaven récupère le chemin Maven avec le nom défini plus tôt pendant la configuration Maven.