Używam Jenkinsa do uruchamiania i zarządzania serią zadań importowania. Chcę umieścić mój skrypt importu w Github, a kiedy Jenkins buduje zadanie, powinien (a) wyciągnąć skrypt Github z kontrolą wersji i (b) uruchomić skrypt.
Problem, na który napotykam, polega na tym, że nie wiem, jak odwoływać się do nazwy skryptu, który ma zostać uruchomiony w zadaniu. Zakładam, że kod źródłowy jest wciągany do katalogu obszaru roboczego. Czy to założenie jest prawidłowe? (Gdyby tylko była dokumentacja!)
Oto co dotychczas zrobiłem:
- Zainstalowałem Jenkinsa (oczywiście) na moim systemie Windows Server (nie, nie miałem wyboru)
- Utworzyłem repozytorium na moim koncie github i umieściłem w nim mój kod
- Jest publiczny na https://github.com/mcholl/SARS-Import/
- Zobaczysz, że mam dwa skrypty: roottest.py i omniture-video \ test.py. Kod tam jest opatentowany przez Apple, jestem pewien :)
- Chodzi o to, że chciałbym uruchomić roottest.py
- Zainstalowano wtyczkę Github
- Utworzono zadanie w następujący sposób:
- Nazwa projektu = „Testowanie integracji Github”
- Projekt GitHub: https://github.com/mcholl/SARS-Import.git/
- Dodaj polecenie wsadowe systemu Windows: python roottest.py
- Wykonaj ręcznie zadanie
Dostaję jednak komunikat o błędzie, że pliku nie można zlokalizować. Jest to dziwne, ponieważ zakładam, że przepływ pracy „pociągnąłby lokalną kopię źródła do katalogu ... (Job) / workspace /, a następnie uruchom polecenie wsadowe w kontekście katalogu obszaru roboczego.
Oto pełne wyjście konsoli:
Rozpoczęty przez użytkownika anonimowy Budowanie w obszarze roboczym C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Github Integration \ workspace [workspace] $ cmd / c call C: \ Windows \ TEMP \ hudson1966342425043540895.bat
C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Github Integration \ workspace> python roottest.py python: nie można otworzyć pliku „roottest.py”: [Errno 2] Brak takiego pliku lub katalogu
C: \ Program Files (x86) \ Jenkins \ jobs \ Testing Github Integration \ workspace> exit 2 Krok kompilacji „Wykonaj polecenie wsadowe systemu Windows” oznaczono kompilację jako niepowodzenie Zakończone: AWARIA
Oczywiście spodziewałem się zobaczyć wyniki mojej instrukcji drukowania w konsoli.
Co zepsułem? I dlaczego mojego skryptu już nie ma?
Odpowiedzi:
W przypadku mojej kompilacji (na hoście Linux) robię coś takiego (jako krok kompilacji w Jenkins), aby wykonać skrypt kompilacji ze świeżo sprawdzonego obszaru roboczego:
Wykonaj polecenie powłoki:
Zakładam, że działałoby to podobnie w systemie Windows, z tym wyjątkiem, że użyłbyś \ zamiast / i używasz Pythona zamiast sh do wykonania skryptu.
źródło
Możesz napisać dwa wiersze w swojej kompilacji:
źródło
Możesz zapisać jakiś skrypt w Git, np. Test.sh:
Następnie w danych wejściowych „Wykonaj powłokę” umieść import tego skryptu i wywołaj „_test_func”:
Wynik:
źródło