Jenkins基于Java开发,服务器必须是要有Java的运行环境!
自动化构建、测试、打包、发布:将本地开发环境基本移植到云端!
git、maven、wget、axel【多线程下载工具,下载快】、跨服务区异步文件同步rsync!tree。
Jenkins支持主从模式,这将会把构建任务分发到多个从节点去执行,这样就可以支撑起多个项目的大量 构建任务,提升构建效率。同时,你可以提供多种环境(如:开发环境、生产环境)来对同一个项目进行测试和构建。
Jenkins的部署方式主要有三种:这里采用第一种方式
sudo -s
yum install -y git sshpass wget rsync tree
java -version
yum install java-1.8.0-openjdk-devel.x86_64 -y
echo $JAVA_HOME
# 配置JAVA_HOME环境变量
vim /etc/profile
source /etc/profile
配置JAVA_HOME环境变量,vim /etc/profile,最后加上,JAVA_HOME路径需确认。
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10- 1.el7_9.x86_64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
axel多线程下载工具。 rpm卸载命令:rpm -e --nodeps 要卸载的软件包
# 下载 axel rpm包
wget http://download- ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/a/axel-2.4-9.el7.x86_64.rpm
# 安装axel
rpm -ivh axel-2.4-9.el7.x86_64.rpm
# 查看版本
axel --version
axel -n 20 https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz tar zxvf apache-maven-3.6.1-bin.tar.gz mv apache-maven-3.6.1 /usr/local/
vim /etc/profile
source /etc/profile
# 测试maven安装是否成功
mvn -v
# 创建maven本地仓库目录
mkdir -p /data/maven_repository
# 如果用户没有当前目录权限,则给用户授权
chown -R hky-student:hky-student /data/maven_repository/
# 修改maven中仓库的位置
vim /usr/local/apache-maven-3.6.1/conf/settings.xml
export MAVEN_HOME=/usr/local/apache-maven-3.6.1
export PATH=${MAVEN_HOME}/bin:${PATH}
找到对应标签,将其中内容替换为新建的仓库位置。在其中添加如下内容
<localRepository>/data/maven_repository</localRepository>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
jenkins.war 没有下载完成会出现该错误。 Error: Invalid or corrupt jarfile jenkins.war
axel -n 20 http://ftp-chi.osuosl.org/pub/jenkins/war/latest/jenkins.war
# 创建jenkins新的工作目录
mkdir -p /data/jenkins_data
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
export JENKINS_SERVER_PATH=/root
export JENKINS_HOME=/data/jenkins_data
cd ${JENKINS_SERVER_PATH}
nohup java -jar jenkins.war --httpPort=80 >jenkins.log 2>&1 &
# 2>&1 日志格式化的方式
# 在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error)
# 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到jenkins.log文件中。
以上内容编辑后保存退出
这里使用sh 脚本启动Jenkins, 也可以直接使用 nohup java -jar jenkins.war 命令启动。
chmod +x jenkins.sh
# 启动jenkins
/root/jenkins.sh
# 修改jenkins配置(插件站点更新,加速联网)
vim /data/jenkins_data/hudson.model.UpdateCenter.xml
将XML内的url的值替换为:http://mirror.xmission.com/jenkins/updates/update-center.json
在root用户下,设置开机执行:vim /etc/rc.d/rc.local,在最后添加如下启动命令
重启后。浏览器访问或者通过jps命令查看。
vim /etc/rc.d/rc.local
# 最后添加启动命令 /root/jenkins.sh
chmod +x /etc/rc.d/rc.local
# 重启机器
reboot
# 查看启动的相关Java程序
jps
# 查看程序进程 及其 端口号
netstat -anp
ps -e|grep java
# 杀死进程
kill pid
nohup java -jar jenkins.war --httpPort=8080 > jenkins.log 2>&1
# 查看java相关程序是否运行
jps -l
提示输入密码,根据页面提示查看密码的方式获取密码并登录,一般用cat命令查看
cat /data/jenkins_data/secrets/initialAdminPassword
# 或者在日志中查看
tail -100f ./jenkins.log
在高级项目选项中,配置流水线脚本。
pipeline {
agent any stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
小结重点介绍核心配置:用户管理、角色管理、分组管理、插件管理、全局工具配置等。
注意:如果想要配置角色管理,必须安装插件才行。
1、安装插件,插件名:Role-based Authorization Strategy
非pipeline的Java项目如果要构建成功,全局工具的环境需要配置好
本质:就是将本地的构建过程搬到云端:CI/CD。Jenkins核心操作,对应的数据两个部分;jobs存储了构建的相关信息。存储从代码仓库拉取下来的所有代码,workspace。
在Jenkins中,所有的数据默认都以文件形式存储在$JENKINS_HOME【/data/jenkins_data】目录下。
占用空间最大的目录就是jobs目录和workspace目录。
thin backup插件实现备份到备份服务器
创建备份目标目录, 安装Thin Backup插件, 找到备份管理页面Manage Jenkins->ThinBackUp,进入后选择Settings进行配置。构建的最大备份文件个数为-1表示不限制,备份中排除了build的结果。
mkdir /data/jenkins_backup
配置信息:
# 配置好了每天21:00执行一次
H 21 * * *
# 特殊配置了备份时需要将凭证目录secrets下的所有文件进行备份,通过正则表达式
^(secrets|.*)$
使用rsync命令可以实现在每天jenkins完毕后,将当天新增的同步内容,增量同步到备份服务器上在master上切换到jenkins用户,执行rsync备份命令。
sshpass -p ****** rsync -avz /data/jenkins_backup/ [email protected]:/data/jenkins_backup/
sshpass -p ****** rsync -avz /data/jenkins_backup/ [email protected]:/root/jenkins_backup/
将rsync做成脚本自动执行,比如jenkins配置的是每天22:31执行同步,那么rsync可以在每天22:35再自动执行登录到部署机上,执行如下操作。
vim /root/backup_jenkins.sh
# 在脚本内填入如下内容
sshpass -p ****** rsync -avz /data/jenkins_backup/[email protected]:/root/jenkins_backup/
# 给脚本添加执行权限
chmod +x /root/backup_jenkins.sh
# 添加到系统crontab文件中,切换到root用户
vim /etc/crontab
# 添加内容
35 22 * * * root /bin/bash /root/backup_jenkins.sh &>/dev/null
# 保存完后,重启contab
systemctl restart crond.service