Install Jenkins slave as a Windows service in command line

前端 未结 3 1086
没有蜡笔的小新
没有蜡笔的小新 2020-12-30 10:46

I have been looking a lot on Google on how to install the service in command line (so without manual interaction) but I am stuck on how to get the jenkins-slave.exe

<
3条回答
  •  死守一世寂寞
    2020-12-30 10:59

    Or is there a way to run the "Install as a service" in command line from the slave.jar?

    I don't use jenkins-slave.exe, but instead a custom script in which I can control the exact environment variable I want to set for the Jenkins slave, when launching java -jar slave.jar with the secret key you can see in the Jenkins master node page for that new slave.

    To get slave.jar from the master onto the slave, execute from the slave Windows server:

    curl -o slave.jar https://your.server/jenkins/jnlpJars/slave.jar
    

    To replace the jenkins-slave.exe, I use a script declared as a Windows service, with nssm

    The script is similar to 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//slave-agent.jnlp -secret 87ef3d...
    

    That script is then called as a Windows service, ran by a dedicated user account:

    runas /user:\ cmd ( enter `jenkinsUser` Windows password )
    
    D:\Tools\nssm-2.24\win64\nssm.exe install  D:\Jenkins\agent.bat
    

    Its Windows service is then configured:

    sc config  obj= \ password= 
    sc config  start= auto
    

    For automating the installation of other software: see Chocolatey - Software Management Automation, The package manager for Windows.


    To fully automate the declaration-side of slaves, use the web API to create the slave, and a groovy script to retrieve the Jenkins node/slave secret JnlpMac key.
    See this script for the creation.
    And the groovy script (with Jenkins 2.46 or newer) to get the secret key:

    echo 'println jenkins.model.Jenkins.instance.nodesObject.getNode("my-agent")?.computer?.jnlpMac' \
      | java -jar ~/Downloads/jenkins-cli.jar -s https://jenkins/ groovy =
    

提交回复
热议问题