Nigdy nie widziałem takiej wtyczki, ale Jenkins ma już wbudowaną podobną funkcjonalność.
Możesz użyć /*zip*/filename.zip
w swojej ścieżce artefaktów, gdzie filename
jest cokolwiek wybierzesz. To zajmie wszystkie znalezione artefakty i pobrać je w na kartę SD (można skończyć z zamkiem wewnątrz zip, jeśli artefakt jest już plik zip)
W twoim przypadku, to będzie:
http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/*zip*/MyJob-latest.zip
To spowoduje wyświetlenie zawartości /artifact/build/
zwróconej w skompresowanym archiwum o nazwie MyJob-latest.zip
. Zauważ, że jeśli masz więcej niż ten plik zip w tym katalogu, inne pliki również zostaną zwrócone.
Możesz używać symboli wieloznacznych na ścieżce. Pojedynczy *
dla zwykłego symbolu wieloznacznego, podwójny **
za pomijanie dowolnej liczby poprzednich katalogów.
Na przykład, aby uzyskać dowolny plik, który zaczyna się MyJob
, kończy się .zip
i szukać go w dowolnym katalogu artefaktu, można użyć:
/lastSuccessfulBuild/artifact/**/MyJob*.zip/*zip*/MyJob-latest.zip
Edit:
Nie można zrobić czegoś takiego bez jakiejś postaci pojemnika (w tym przypadku zip). Z pojemnika, mówisz system:
- uzyskać wszelkie ewentualne [nieokreślony COUNT] wieloznaczny mecz i umieszczenia w tym pojemniku, a następnie dać mi pojemnik. Jest to logiczne i możliwe, ponieważ istnieje tylko jeden pojedynczy kontener, bez względu na to, czy jest pusty, czy nie.
Ale nie można powiedzieć, że system:
- dać mi link do konkretnego pojedynczego pliku, ale nie wiem który z nich lub ile istnieją. System nie może zagwarantować, że symbole wieloznaczne będą pasowały do jednego, więcej niż jednego lub żadnego. Jest to po prostu niemożliwe z punktu widzenia logiki.
Jeśli potrzebujesz go do automatyzacji skryptów, możesz rozpakować suwak pierwszego poziomu i pozostawić go z pożądanym spakowanym artefaktem.
Jeśli potrzebujesz tego linku do kogoś innego, potrzebujesz alternatywnego rozwiązania.
Alternatywa 1:
Po twój build jest kompletna, należy wykonać krok po kompilacji, która będzie miała swój artefakt, i zmień jego nazwę na MyJob-latest.zip
, ale tracą wersjonowanie w nazwie pliku. Możesz również wybrać kopiowanie zamiast zmieniać nazwę, ale kończysz z podwójnym miejscem do przechowywania tych artefaktów.
Alternatywa 2 (zalecany): jako działanie post-build, przesłać artefakt do centralnego repozytorium. Może to być Artifactory, a nawet zwykły SVN. Po przesłaniu nazwa zostanie zmieniona na MyJob-latest.zip
, a poprzednia zostanie nadpisana. W ten sposób można mieć statyczny link, który zawsze będzie miał najnowszy artefakt z lastSuccessfulBuild
Problem polega na tym, że nazwa artefaktu to 'MyJob-v1.1.0.zip'. Używanie 'MyJob - *. Zip' nie działa. :( – paleozogt
Czy faktycznie masz więcej niż 1 plik w katalogu 'build'? Pierwszy podany wiersz będzie działał poprawnie, jeśli nie ma innych plików – Slav
Po przejściu do'/artefakt' zobaczysz stronę z polem wprowadzania Wpisz '**/*. zip' i naciśnij klawisz Enter .To da ci jeden plik, który chcesz? – Slav