Einrichten des Repositorys
Sie benötigen eine JSON-Datei, die aus Talend Cloud API Tester generiert wurde, zum Beschreiben Ihrer Tests und eine pom.xml.-Datei, um sie zu konfigurieren. Beispieldateien finden Sie im Archiv jenkins.zip.
Die POM-Datei
Die Konfiguration der POM-Datei kann mit JVM-Argumenten parametrisiert werden.
<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>
Hier können Sie sehen, dass die Testdatei parametrisiert ist. Damit können Sie Ihre Tests in getrennten Dateien ablegen und die Tests einzeln aufrufen, indem Sie im Maven-Befehl die Testdatei angeben.
Die Konto-ID wurde ebenfalls parametrisiert. Aus Sicherheitsgründen ist es sehr wichtig, dass die Konto-ID nicht an ein GitHub-Repository gepusht wird. Da sich sowohl die POM-Datei als auch die Jenkinsfile in Ihrem öffentlichen GitHub-Repository befinden, müssen Sie den Build parametrisieren und hier die Konto-ID über Jenkins-Anmeldedaten injizieren.
Die Variable API_KEY ist etwas schwieriger. Sie ist eine der Variablen aus Ihrer Talend Cloud API Tester-Umgebung in der JSON-Testdatei. Sie wurde hier manuell überschrieben, weil sie sensible Informationen enthält, die nicht an GitHub gepusht werden sollten. Das bedeutet, dass Sie Umgebungen mit einem gültigen Wert hier zum Ausführen der Tests in Talend Cloud API Tester und eine sichere Umgebung ohne enthaltene sensible Informationen für CI haben können, wo Sie die sensiblen Daten manuell hinzufügen.
Die Jenkinsfile
Jenkins-Pipelines sind in Groovy geschrieben, aber Sie müssen die Sprache nicht beherrschen, um sie erstellen zu können, sie sind sehr beschreibend.
Sie führen die folgende Pipeline aus:
#!/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.'
}
}
}
Die Erstellungs- und Implementierungsphasen sind in diesem Fall Beispiele. In einem echten Build-Job würden Sie hier Ihren Code zum Erstellen und Implementieren schreiben. Dieses Tutorial konzentriert sich auf die Testphase.
Anmeldedaten: Sie sehen in der Testphase, dass der Block withCredentials verwendet wird, um den API-Schlüssel und die Talend Konto-ID abzurufen und sie in Variablen mit dem gleichen Namen zu speichern. Diese werden dann als JVM-Argumente wiederverwendet, um Werte für den parametrisierten Teil der POM-Datei bereitzustellen.
Maven: Der Block withMaven ruft den Maven-Pfad mit dem Namen ab, den wir an früherer Stelle in der Maven-Konfiguration festgelegt haben.