You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.4 KiB
Markdown
155 lines
3.4 KiB
Markdown
|
4 years ago
|
# 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
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
|