Jenkins 部署

1、Jenkins介绍

https://jenkins.io/zh

Jenkins是一个独立的开源软件项目,是基于Java开发的一种CI(Continuous integration,持续集成)&CD (Continuous Delivery,持续交付)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。其前身是商业软件Hudson。可用于自动化各种任务,如构建,测试和部署软件。

Jenkins 作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心。

Jenkins 只是一个调度平台,其本身并不能完成项目的构建部署

Jenkins 需要安装各种插件,可能还需要编写Shell,python脚本等才能调用和集成众多的组件来实现复杂的构建部署功能

主要用途:

  • 持续、自动地构建/测试软件项目
  • 监控一些定时执行的任务

Jenkins特点:

  • 开源免费
  • 跨平台,支持所有的平台
  • master/slave支持分布式的build
  • web形式的可视化的管理页面
  • 安装配置简单
  • 及时快速的提示和帮助
  • 已有的1800+插件

Jenkins 版本

https://www.jenkins.io/download/
https://www.jenkins.io/zh/download/
https://mirrors.tuna.tsinghua.edu.cn/jenkins/

Jenkins 项目产生两个发行线,长期支持版本 (LTS) 和定期发布版本。

2、jenkins 安装

Jenkins 支持多种部署和运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

Jenkins支持多种安装方法

  • docker
  • 通用java包 war文件
  • 二进制包

2.1、安装前环境准备

# 系统准备

#关闭防火墙和SELinux
#设置语言环境,防止后期Jenkins汉化出问题
[root@jenkins01 ~]# localectl set-locale LANG=en_US.UTF-8
# JAVA 环境
# jenkins基于JAVA实现,安装jenkins前需要先安装 JDK
# 安装openjdk
# 或者安装oracle的jdk8
[root@jenkins01 ~]# tar xvf jdk-8u351-linux-x64.tar.gz -C /usr/local/src/

[root@jenkins01 ~]# cd /usr/local/src/

[root@jenkins01 src]# ll
total 0
drwxr-xr-x 8 root root 273 Dec 19 07:39 jdk1.8.0_351

[root@jenkins01 src]# ln -sv jdk1.8.0_351/ jdk
‘jdk’ -> ‘jdk1.8.0_351/’

[root@jenkins01 src]# ll
total 0
lrwxrwxrwx 1 root root  13 Dec 19 07:40 jdk -> jdk1.8.0_351/
drwxr-xr-x 8 root root 273 Dec 19 07:39 jdk1.8.0_351

[root@jenkins01 src]# ln -sv jdk/bin/java /usr/bin/
‘/usr/bin/java’ -> ‘jdk/bin/java’

[root@jenkins01 src]# vim /etc/profile

export JAVA_HOME=/usr/local/src/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

[root@jenkins01 src]# source /etc/profile

[root@jenkins01 src]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

# 或者安装JDK-11版
[root@jenkins01 ~]# tar -xvf jdk-11.0.16.1_linux-x64_bin.tar.gz -C /usr/local/src

[root@jenkins01 ~]# cd /usr/local/src
[root@jenkins01 src]# ll
total 0
drwxr-xr-x 9 root root 126 Dec 19 08:04 jdk-11.0.16.1

[root@jenkins01 src]# ln -sv jdk-11.0.16.1/ jdk
‘jdk’ -> ‘jdk-11.0.16.1/’

[root@jenkins01 src]# ll
total 0
lrwxrwxrwx 1 root root  14 Dec 19 08:05 jdk -> jdk-11.0.16.1/
drwxr-xr-x 9 root root 126 Dec 19 08:04 jdk-11.0.16.1

[root@jenkins01 src]# ln -sv jdk/bin/java /usr/bin/
‘/usr/bin/java’ -> ‘jdk/bin/java’

[root@jenkins01 src]# vim /etc/profile
export JAVA_HOME=/usr/local/src/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

[root@jenkins01 src]# source /etc/profile
[root@jenkins01 src]# java -version
java version "11.0.16.1" 2022-08-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)

2.2、CentOS 包安装 jenkins

[root@jenkins01 ~]#  yum install fontconfig -y

[root@jenkins01 ~]# wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.319.3-1.1.noarch.rpm

[root@jenkins01 ~]# yum install -y jenkins-2.319.3-1.1.noarch.rpm

[root@jenkins01 ~]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins

[root@jenkins01 ~]# systemctl start jenkins

# 查看第一次的登录密码
[root@jenkins01 ~]# grep -A2 password /var/log/jenkins/jenkins.log
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

cbe1851d10e14a4989c0bddcff421ed1

# 查看第一次的登录密码
[root@jenkins01 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
cbe1851d10e14a4989c0bddcff421ed1

# 默认配置
[root@jenkins01 ~]# grep -v "#" /etc/sysconfig/jenkins | grep -v "^$"
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_HTTP2_PORT=""
JENKINS_HTTP2_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_EXTRA_LIB_FOLDER=""
JENKINS_ARGS=""

# 修改配置
[root@jenkins01 ~]# grep -v "#" /etc/sysconfig/jenkins | grep -v "^$"
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname="192.168.1.73" "
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

# 可选启动参数:
JENKINS_JAVA_OPTIONS="-server -Xms1g -Xmx1g -Xss512k -Xmn1g
-XX:CMSInitiatingOccupancyFraction=65
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts -XX:+UseBiasedLocking
-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10
-XX:NewSize=2048M -XX:MaxNewSize=2048M -XX:NewRatio=2
-XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5
-XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -Djava.awt.headless=true
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname="192.168.1.73" "

修改 jenkins 服务的用户

默认jenkins服务使用jenkins 帐号启动,将文件复制到生产服务器可能会遇到权限问题,因此修改为root用户

[root@jenkins01 ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"

[root@jenkins01 ~]# systemctl restart jenkins
[root@jenkins01 ~]# ps -aux | grep jenkins
root      27976 59.6  2.8 3692832 109196 ?      Ssl  08:43   0:01 /usr/bin/java -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.73 -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root      28051  0.0  0.0 112812   980 pts/0    R+   08:43   0:00 grep --color=auto jenkins

2.3、基于 war 包直接部署

可以直接下载 war 包,相当于绿色软件,就可以直接使用

https://get.jenkins.io/war-stable/
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/

3、启动 Jenkins

启动 Jenkins 可以通过下面三种方式实现

  • 利用 service 文件启动
  • 利用 jar 命令直接启动
  • 利用 tomcat 启动

3.1、通过脚本或service启动

deb或rpm包安装后,可以通过init脚本或service方式直接启动

[root@jenkins01 ~]# systemctl start jenkins

[root@jenkins01 ~]# tail -n1 /var/log/jenkins/jenkins.log
2022-12-19 00:43:15.045+0000 [id=25]	INFO	hudson.WebAppMain$3#run: Jenkins is fully up and running

3.2、通过 java 命令直接启动 jenkins

# 查看帮助
# java -jar jenkins.war --help
Running from: /usr/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
Jenkins Automation Server Engine 2.289.2
Usage: java -jar jenkins.war [--option=value] [--option=value]

Options:
   --webroot                = folder where the WAR file is expanded into.
Default is ${JENKINS_HOME}/war
   --pluginroot             = folder where the plugin archives are expanded
into. Default is ${JENKINS_HOME}/plugins
                             (NOTE: this option does not change the directory
where the plugin archives are stored)
   --extractedFilesFolder   = folder where extracted files are to be located.
Default is the temp folder
   --daemon                 = fork into background and run as daemon (Unix only)

# 用户 java 命令直接启动jenkins
# java \
-Dcom.sun.management.jmxremote \
-Djava.rmi.server.hostname="10.0.0.101 " \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar jenkins-2.138.3.war &

3.3、将jenkins.war放在tomcat进行运行

先安装tomcat,将jenkins.war配置tomcat的应用目录即可

# mkdir /home/tomcat/.jenkins -pv
mkdir: created directory '/home/tomcat'
mkdir: created directory '/home/tomcat/.jenkins'
# chown -R tomcat.tomcat /home/tomcat/
# systemctl restart tomcat
# cat /home/tomcat/.jenkins/secrets/initialAdminPassword
dbbff06091f1436e8ada27b26b108856

4、首次登录 Jenkins页面初始化

4.1、首次登录 Jenkins 页面

用浏览器访问:http://192.168.1.73:8080/

图片[1]-Jenkins 部署-李佳程的个人主页
[root@jenkins01 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
cbe1851d10e14a4989c0bddcff421ed1

4.2、选择安装 jenkins 插件

因为默认安装插件需要连接国外的网站,会很慢,所以建议选择插件安装,先不安装任何插件,后续做优化配置后再安装会快很多。

图片[2]-Jenkins 部署-李佳程的个人主页

选择安装推荐的插件会安装很慢,可以选择不安装,直接点右上角的X直接完成安装过程,后续再用离线方式安装插件

4.3、插件安装

选 无 ,不安装任何插件

图片[3]-Jenkins 部署-李佳程的个人主页

如果是选择安装推荐的插件,进入下面页面,安装插件很慢,可以通过代理的方法解决

图片[4]-Jenkins 部署-李佳程的个人主页

4.4、创建 Jenkins 管理员(可选)

用户信息保存在下面目录

[root@jenkins01 ~]# ls /var/lib/jenkins/users/
admin_3138073139217752010  users.xml

系统默认有一个管理员帐号admin,继续即可,也可以新创建一个管理员帐号

图片[5]-Jenkins 部署-李佳程的个人主页

4.5、配置 Jenkins URL

保存完成即可

图片[6]-Jenkins 部署-李佳程的个人主页

4.6、配置完成并登陆 jenkins

如果没有创建新管理员帐号,界面如下

图片[7]-Jenkins 部署-李佳程的个人主页

4.7、登陆 Jenkins界面

如果没有创建管理员,直接是admin登录

图片[8]-Jenkins 部署-李佳程的个人主页

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享