安装Jenkins LTS


环境说明:

  • 已安装Java环境,版本在8.0以上
  • 如果是对接 kubernetes 需要设置 https 协议

添加用户并设置sudo免密

useradd jenkins
echo 123456 | passwd jenkins --stdin
echo 'jenkins    ALL=(ALL)       NOPASSWD: ALL' > /etc/sudoers.d/jenkins
su - jenkins

下载war包

curl -L https://get.jenkins.io/war-stable/2.319.3/jenkins.war -o jenkins-2.319.3.war

创建目录

sudo mkdir -p /opt/jenkins/{data,war,logs,webroot,pid}
sudo chown -R jenkins.jenkins /opt/jenkins/ 

拷贝war包

cp jenkins-2.319.3.war /opt/jenkins/war

HTTP

启动服务

cd /opt/jenkins
nohup java -Djava.awt.headless=true \
-DJENKINS_HOME=/opt/jenkins/data \
-jar /opt/jenkins/war/jenkins-2.319.3.war \
--webroot=/opt/jenkins/webroot \
--logfile=/opt/jenkins/logs/jenkins.log \
--httpPort=8081 --debug=5 \
--handlerCountMax=100 --handlerCountMaxIdle=20 \
--prefix=/jenkins > /dev/null & echo $! > pid/jenkins.pid

参数说明

--prefix:设置子路径
--httpPort:设置 http 协议端口,当设置为 -1 时,表示使用http协议
--debug:日志级别
-DJENKINS_HOME:Jenkins主目录
-jar:jar包位置
--logfile:日志存放路径
--webroot:war包解压文件

HTTPS

创建证书

# 建立一个openssl目录
mkdir -p ~/openssl && cd ~/openssl

# 生成CA私钥文件
openssl genrsa -out ca.key 2048

# 使用CA**生成CA x509证书文件。定义证书的有效性。
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Guangdong/O=ecloud/CN=ecloud.com" -key ca.key -out ca.crt

# 创建服务器私钥
openssl genrsa -out server.key 2048

# 使用私钥生成CSR
openssl req -new -subj "/C=CN/ST=Guangdong/O=ecloud/CN=ecloud.com" -key server.key -out server.csr

# 使用ca.key,ca.crt和server.csr生成服务器SSL证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

# 将SSL转换为PKCS12格式
openssl pkcs12 -export -out jenkins.p12 \
-passout 'pass:123456' -inkey server.key \
-in server.crt -certfile ca.crt -name jenkins.ecloud.com

# 将PKCS12转换为JKS格式
keytool -importkeystore -srckeystore jenkins.p12 \
-srcstorepass '123456' -srcstoretype PKCS12 \
-srcalias jenkins.ecloud.com -deststoretype JKS \
-destkeystore jenkins.jks -deststorepass '123456' \
-destalias jenkins.ecloud.com

启动服务

cd /opt/jenkins
/opt/jdk1.8.0_201/bin/java -Djava.awt.headless=true \
-DJENKINS_HOME=/opt/jenkins/data \
-jar /opt/jenkins/war/jenkins-2.319.3.war \
--webroot=/opt/jenkins/webroot \
--logfile=/opt/jenkins/logs/jenkins.log \
--httpPort=-1 --httpsPort=8443 \
--httpsKeyStore=/home/jenkins/openssl/jenkins.jks --httpsKeyStorePassword=123456 --debug=5 \
--handlerCountMax=100 --handlerCountMaxIdle=20 \
--prefix=/jenkins > /dev/null & echo $! > pid/jenkins.pid

参数说明

--httpPort:设置 http 协议端口,当设置为 -1 时,表示使用http协议
-httpsPort:设置 https 协议端口
--httpsKeyStore:SSL KeyStore 文件的位置
--httpsKeyStorePassword:SSL KeyStore 文件的密码

关闭服务

cat /opt/jenkins/pid/jenkins.pid | xargs -I {} kill {}

官方文档:https://www.jenkins.io/