Jak mogę programowo zmodyfikować konfigurację zadania Jenkins bez ponownego uruchamiania?

10

Zadania Jenkins mają pliki config.xml, które przechowują konfigurację tego zadania.

Mam zadanie „menedżera zadań”, które modyfikuje konfigurację innych zadań, ale wydaje się, że nie mogę uzyskać nowej konfiguracji bez ponownego uruchomienia Jenkins.

Narzędzie wiersza poleceń jenkins-cli.jar wydaje się dziwnie nie mieć opcji dla tej akcji.

Możliwe jest edytowanie konfiguracji przez interfejs sieciowy i zapisanie / potwierdzenie bez ponownego uruchomienia, więc nie wydaje się, że byłoby to technicznie niemożliwe.

Moja najlepsza próba polegała na wysłaniu wiadomości na ten sam adres, co interfejs sieciowy

wget --post-file=config.xml --user=joe.shmoe --password=secret01 \
     --no-check-certificate                                      \
     https://jenkins.company.com/job/myProject/config.xml

... ale dostaję 403 pomimo używania prawidłowych poświadczeń (skopiuj wklejone, aby zapewnić brak literówek)

Czy ktoś ma jakieś pomysły lub wie coś prostego, czego mi brakuje?

Catskul
źródło
o kurczę. TO W rzeczywistości działa !!! (z ustalonym uwierzytelnianiem, jak sugeruje Catskul poniżej lub w moim przypadku bez autoryzacji) Od kilku godzin szukam tej techniki ...
Dave Dopson,

Odpowiedzi:

8

Okazuje się, że kluczowe informacje wydają się być opcją „--auth-no-challenge” wget, która najwyraźniej dotyczy mało znanych konfiguracji serwera WWW, takich jak Jenkins, które nie przestrzegają oczekiwanego protokołu:

wget --auth-no-challenge --user=joe.shmoe --password=secret  \
     --post-file=config.xml --no-check-certificate           \
     https://jenkins.company.com/job/myProject/config.xml
Catskul
źródło
4

Wolę curl ....

curl "http://localhost:18080/jenkins/job/npm-package-aaa/config.xml" -si --data-binary "$XML" -H "Content-Type: text/xml" 
Dave Dopson
źródło