add jenkins node setup

main
YIk Teng Hie 4 years ago
parent 48b15708f5
commit 5de0f7d958

@ -0,0 +1,155 @@
# Node Setup Guide
* Jenkins Plugins
* pipeline
* node and label
* gradle
* maven
* Java compiler
* Java 8
```sh
# install full jdk8 packge
# openjdk-8-jdk-headless exclude some jar file (eg /lib/jconsole.jar)
# which is need by alibaba druid dependencies package
$ apt install openjdk-8-jdk
```
* Slave Agent
* Create a slave VM. Username as `jenkins`
* Set to sudo user
```sh
# add jenkins user
$ adduser jenkins
# change jenkins to sudo group
$ usermod -aG sudo jenkins
# check the user group
$ groups jenkins
# verify sudo access
$ su - jenkins
```
* Optional, add `jenkins` as `sudoer`
* [reference](https://www.maketecheasier.com/edit-sudoers-file-linux/)
```sh
# add jenkins as sudoer
$ visudo
# User privilege specification
# username hostlist = (userlist) commandlist
# eg. Only allow alex to run apt-get update
# alex ALL=(ALL) /usr/bin/apt-get update
root ALL=(ALL:ALL) ALL
jenkins ALL=(ALL:ALL) ALL
```
* Run jenkins node agent
```sh
# download agent.jar file from jenkins server
$ wget https://192.168.0.119/jnlpJars/agent.jar --no-check-certificate
# run the agent to connect to server
$ sudo java -jar agent.jar -jnlpUrl https://192.168.0.119/computer/jenkins.slave/jenkins-agent.jnlp -noCertificateCheck -secret 39694868bc66890cd5eb6c04b0a51692403ab957ceb1d1b258c353a031334733 -workDir "/home/jenkins"
```
## Run agent as service
* [reference](https://www.baeldung.com/linux/run-java-application-as-service)
* create a script file `startagent.sh`
```sh
#!/bin/bash
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
WORKDIR=/home/jenkins/scripts
APP_OPTIONS=" -jnlpUrl https://192.168.0.119/computer/jenkins.slave/jenkins-agent.jnlp -noCertificateCheck -secret @secret-file -workDir \"/home/jenkins\""
"${JAVA_HOME}/bin/java" -jar agent.jar $APP_OPTIONS
```
* create the `secret-file`
```sh
$ echo 39694868bc66890cd5eb6c04b0a51692403ab957ceb1d1b258c353a031334733 > secret-file
```
* test the script
```sh
$ chmod +x startagent.sh
# start at background
$ ./startagent.sh &
# make foreground
$ fg
```
* create a service
* Create the service unit file `jenkinsagent.service`
```ini
[Unit]
Description=Jenkins Agent service
[Service]
SuccessExitStatus=143
User=jenkins
Group=sudo
WorkingDirectory=/home/jenkins/scripts
ExecStart=/home/jenkins/scripts/startagent.sh
[Install]
WantedBy=multi-user.target
```
* copy the service unit file to system `/etc/systemd/system`
```sh
$ sudo cp ./jenkinsagent.service /etc/systemd/system/jenkinsagent.service
# reload unit files
$ sudo systemctl daemon-reload
# enable the service (after tested ok). service will start upon every PC restart
$ sudo systemctl enable jenkinsagent.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkinsagent.service -> /etc/systemd/system/jenkinsagent.service.
# start the service
$ sudo systemctl start jenkinsagent.service
# check status o service
$ sudo systemctl status jenkinsagent.service
# stop the service
$ sudo systemctl stop jenkinsagent.service
```
Loading…
Cancel
Save