Próbuję skonfigurować jenkins-workflow, aby wykonać nasze testy integracyjne. Nasze testy integracji działają w następujący sposób:Jak sprawić, by gałęzie z funkcjami git działały z Jennkins-workflow?
Ktoś dokonuje zmiany na LibraryA
w gałęzi funkcji w git. Chcielibyśmy, aby firma Jennkins przeprowadziła testy jednostkowe w odniesieniu do kodu w gałęzi funkcji, a następnie chcielibyśmy zainstalować kod z tej gałęzi funkcji w client1
i client2
(którzy są użytkownikami LibraryA
) i przeprowadzić ich testy.
Udało mi się skonfigurować przepływ pracy, aby zrobić wszystko z wyjątkiem uzyskania odpowiedniego zatwierdzenia do gałęzi funkcji LibraryA
. Zamiast tego, moja instalacja po prostu wyciąga zatwierdzenie z jakiejś (pozornie przypadkowej) gałęzi LibraryA
.
Posiadamy wiele gałęzi funkcjonalnych, więc kodowanie w konkretnym odgałęzieniu w konfiguracji przepływu pracy nie jest odpowiednie. Wygląda na to, że powinien istnieć jakiś sposób uzyskania skrótu zatwierdzenia, które uruchamia zadanie przepływu pracy (nawet podczas korzystania z odpytywania SCM).
Moja konfiguracja wygląda następująco:
currentBuild.setDisplayName("#" + env.BUILD_NUMBER)
node {
git credentialsId: '033df7f1-7752-46bd-903d-8a70e613eed0', url: '[email protected]:mycompany/myrepo.git'
sh '''
echo `git rev-parse HEAD` > libraryA_version.txt
sudo docker run --rm=true -e LANG=en_US.UTF-8 -a stdout -i -t mycompany/libraryA run_tests
'''
archive 'libraryA_version.txt'
}
def integration_jobs = [:]
integration_jobs[0]={
node{
ws {
unarchive mapping: ['libraryA_version.txt':'.']
sh 'sudo docker run -t --rm mycompany/client1:v1 bash run_tests.sh "`cat libraryA_version.txt`"'
}
}
}
integration_jobs[1] = {
node{
ws {
unarchive mapping: ['libraryA_version.txt' : '.']
sh 'sudo docker run -t --rm mycompany/client2 run_tests.sh "`cat libraryA_version.txt`" '
}
}
}
parallel integration_jobs
Więc mój obecny pytanie brzmi jak mogę skonfigurować git repo/ankietowanie, aby uzyskać prawo zobowiązać się do uruchomienia w pierwszym badaniu, które zostaną wykorzystane w libraryA_version.txt
w kolejnych testach?
Czy powinienem omówić ten proces w zupełnie inny sposób?
Tego właśnie się obawiałem. Tak zaczęliśmy. Mamy działający na wielu stanowiskach łańcuch narzędzi, ale ma on niepożądane cechy. Nie skaluje się z naszymi repo w tym sensie, że mamy za dużo zadań do zarządzania. Powiadomienia o niepowodzeniach i winowajcy nie działają dobrze. Konfiguracja pomiędzy stanowiskami jest nieoczekiwana. Właśnie dlatego wtyczka Jenn-Workflow jest przyjemna - konfiguracja całego łańcucha integracji jest jednym, dość kompaktowym zadaniem. – Robert
Następnie pozwól nam odpowiedzieć na twoje oryginalne pytanie, oto lista zmiennych dotyczących pracy Jenkinsa: https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project. W twoim przypadku GIT_COMMIT i GIT_BRANCH powinny być informacjami, których szukasz w budowaniu przepływu pracy. – blacklabelops
Wydrukuję moje env vars na górze zadania, a te nie są dostępne. Najwyraźniej zadanie pracy Jenkinsa nie ustawia tych zmiennych GIT. "Poniższe zmienne są aktualnie niedostępne wewnątrz skryptu workflow: EXECUTOR_NUMBER node_name NODE_LABELS Workspace zmienne SCM-specyficzne takie jak SVN_REVISION" – Robert