J'ai beaucoup cherché sur Google pour installer le service en ligne de commande .__ (donc sans interaction manuelle), mais je suis bloqué sur la façon de Obtenir le jenkins-slave.exe.
J'ai trouvé ces instructions https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+as+a+Windows+service , Mais je ne vois pas comment obtenir l'exécutable. . J'ai téléchargé et exécuté Le slave.jar avec la bonne clé, qui connecte l'esclave, mais l'exe N'est pas généré.
J'ai trouvé cette page https://github.com/kohsuke/winsw/blob/master/doc/installation.md#winsw-installation-guide De l'installer manuellement, mais cela ressemble -inventé la roue quand le pot peut le faire. De plus, il y a un risque que WinSW.exe soit différent et que Ne soit pas mis à jour par le plugin (j'ai vu du code de mise à jour automatique dans celui-ci).
Y at-il un moyen de télécharger jenkins-slave.exe ou de le générer? Ou d’exécuter "Installer en tant que service" en ligne de commande à partir de The slave.jar?
Pour répondre à ma propre question, après avoir contacté les développeurs du plugin:
Il n’existe aucun moyen de télécharger le fichier exe directement à partir de Jenkins, le fichier slave.jar l’obtient du maître via le protocole de communication à distance. J'ai créé une demande pour pouvoir le télécharger via une URL (comme suggéré par le développeur), afin qu'il puisse être disponible à l'avenir.
Actuellement, l'exécutable est un binaire Windows Service Wrapper renommé: https://github.com/kohsuke/winsw j'ai donc utilisé ce binaire de la même manière.
En ce qui concerne la configuration utilisée par les fichiers WinSW et XML, j’ai utilisé celle du référentiel GitHub https://github.com/jenkinsci/windows-slave-installer-module . Les versions sont compatibles en termes de configuration.
Donc, fondamentalement, je télécharge le fichier exe, récupère la clé privée de Jenkins et crée le service en utilisant la configuration du plug-in d'origine. Ensuite, j'installe le service en utilisant jenkins-slave.exe install
.
Pas à pas:
Java -jar slave.jar -jnlpUrl http://jenkins...
slave.jar
à partir de Jenkins (obtenu à partir de la commande JNLP)http://repo.jenkins-ci.org/public/com/Sun/winsw/winsw/2.1.0/winsw-2.1.0-bin.exe
jenkins-slave.exe install
Ce que je ferais est:
slave.jar
(à partir de la page du nœud de Jenkins)Java -jar slave.jar -jnlpUrl http://<YOUR URL HERE>
à partir de la page du nœud..bat
et enregistrez-le..bat
au démarrage de WindowsOu existe-t-il un moyen d'exécuter "Installer en tant que service" en ligne de commande à partir du fichier slave.jar?
Je n'utilise pas jenkins-slave.exe
, mais un script personnalisé dans lequel je peux contrôler la variable d'environnement exacte que je veux définir pour l'esclave Jenkins, lors du lancement de Java -jar slave.jar
avec la clé secrète que vous pouvez voir dans la page du nœud principal Jenkins pour ce nouvel esclave .
Pour obtenir slave.jar
du maître sur l'esclave, exécutez-le à partir du serveur Windows esclave:
curl -o slave.jar https://your.server/jenkins/jnlpJars/slave.jar
Pour remplacer jenkins-slave.exe, j'utilise un script déclaré en tant que service Windows, avec nssm
Le script est similaire à agent.bat
:
set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0
set PATH=D:\Tools\SonarRunner\bin;%PATH%
set M2_HOME=D:\Tools\Apache-maven-3.5.0
set PATH=%M2_HOME%\bin;%PATH%
set PATH=D:\Tools\Apache-ant-1.9.3\bin;%PATH%
set GH=D:\Tools\Git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
set PATH=%Java_HOME%\bin;%PATH%
set WORKSPACE_FOLDER=D:\Jenkins\workspace
set GIT_WORKSPACE_FOLDER=D:\Jenkins\workspace
Java -Xmx768m -jar slave.jar -jnlpUrl https://your.server/jenkins/computer/<SlaveName>/slave-agent.jnlp -secret 87ef3d...
Ce script est ensuite appelé en tant que service Windows, exécuté par un compte utilisateur dédié:
runas /user:<domain>\<jenkinsUser> cmd ( enter `jenkinsUser` Windows password )
D:\Tools\nssm-2.24\win64\nssm.exe install <SlaveName> D:\Jenkins\agent.bat
Son service Windows est alors configuré:
sc config <SlaveName> obj= <domain>\<jenkinsUsers> password= <jenkinsUser password>
sc config <SlaveName> start= auto
Pour automatiser l'installation d'autres logiciels: voir Chocolatey - Automatisation de la gestion des logiciels , Le gestionnaire de paquets pour Windows.
Pour automatiser entièrement le côté déclaration des esclaves, utilisez l’API Web pour créer l’esclave et un script groovy pour récupérer la clé secrète JnlpMac du nœud/esclave Jenkins .
Voir ce script pour la création .
Et le script groovy (avec Jenkins 2.46 ou plus récent) pour obtenir la clé secrète:
echo 'println jenkins.model.Jenkins.instance.nodesObject.getNode("my-agent")?.computer?.jnlpMac' \
| Java -jar ~/Downloads/jenkins-cli.jar -s https://jenkins/ groovy =