Czy ktoś próbował sposób dodać lub zaktualizować zmienną ŚRODOWISKO w konfiguracji Jenkins niewolników za pomocą Jenkins Rest/API lub w jakikolwiek inny sposób.Jenkins Slave - jak dodać lub zaktualizować zmienne ŚRODOWISKA
Używając wtyczki Jenkins Swarm, stworzyłem slave (używa JLNP do połączenia z mistrzem Jenkinsa), ale zmienne ŚRODOWISKO (pole wyboru nie jest zaznaczone) i nie istnieją zmienne ŚRODOWISKO utworzone przez jar klienta Swarm (domyślnie). Użytkownik może ręcznie dodać, jeśli jest to wymagane, ale szukam sposobu na dodanie/aktualizację zmiennych ENV w slave.
Chcę utworzyć wiele niewolników Swarm (gdzie każdy niewolnik ma różne narzędzia o różnych wartościach tj slave01 JAVA_HOME =/ścieżka/jdk1.7.0.67 i innych slave02 JAVA_HOME =/ścieżka/jdk1.8.0_45 itd itd).
Próbowałem patrząc http://javadoc.jenkins-ci.org/hudson/model/Node.html lub http://javadoc.jenkins-ci.org/hudson/model/Slave.html lub http://javadoc.jenkins-ci.org/hudson/slaves/DumbSlave.htmlale nie przewiduje żadnych Metoda/sposób ustawiania właściwości/zmienne ENV węzła. Nie ma właściwości setNodeProperties lub czegoś podobnego (jeśli jest to właściwa metoda ustawiania zmiennych/właściwości ENV).
To, czego szukam, to sposób na dodanie następujących zmiennych do urządzenia podrzędnego.
Ten post (przez Villiam) odzwierciedla fakt, że ktoś próbował groovy kawałek zrobić to samo, ale nie widzę w jaki sposób może on ustawić zmienne ENV przy użyciu tego samego API to Create/Manage Nodes
Jenkins- CLI ma możliwość uruchamiania skryptów odjechane:
java -jar path/to/jenkins-cli.jar -s http://localhost:8080 groovy path/to/script
scenariusz:
import jenkins.model.*
import hudson.model.*
import hudson.slaves.*
Jenkins.instance.addNode(new DumbSlave("test-script","test slave description","C:\\Jenkins","1",Node.Mode.NORMAL,"test-slave-label",new JNLPLauncher(),new RetentionStrategy.Always(),new LinkedList()))
(patrz Dokumentacja dla innych opcji: http://javadoc.jenkins-ci.org/)
Można również uruchomić interaktywną groovy powłokę z
java -jar jenkins-cli.jar -s http://localhost:8080 groovysh
Świetnie! Czy możesz wskazać, jeśli węzeł jest już utworzony (w pewien sposób) i chcę użyć powyższego kodu (ale zamiast używać funkcji addNode i nowych DumbSlave, mogę użyć czegoś takiego jak updateNode i po prostu zmienić/dodać/zaktualizować ENV Zmienna? Uaktualniłem twoją odpowiedź z tym, co miałem na myśli (możemy dodać if-then-else później i sprawić, by ten parametr był dobrze napisany) .Jeśli możemy ulepszyć ten skrypt jako ogólny skrypt (tzn. można go użyć dla dowolnego Jenkinsa master instance) –
Twoje rozwiązanie działało TYLKO, jeśli pole wyboru "Zmienne środowiskowe" jest ręcznie zaznaczone/zaznaczone jako pierwsze.Jeśli słoik wtyczki Swarm jest używany do utworzenia urządzenia podrzędnego, pole wyboru "Zmienna środowiskowa" NIE jest zaznaczone. Zmienna do istniejącego slave (rozwiązanie) działa tylko wtedy, gdy ręcznie zaznaczyłem to pole jako pierwsze Zapisz plik slave, a następnie uruchom powyższy skrypt. Rzeczywiście osiągnąłem ten sam ostatni tydzień, ale obecnie jestem zaskoczony pytaniem "Jak automatycznie ustawić to pole wyboru" dla Env Zmienne żelazne "w konfiguracji niewolniczej przed uruchomieniem powyższego cennego elementu. –
Hi @ArunSangal, czy kiedykolwiek rozwiązałeś automatycznie problem z włączaniem zmiennych środowiskowych? Mam dokładnie ten sam problem i nie mogę go rozwiązać. – laffoyb