jenkins部署文档
前言:
官方:https://www.jenkins.io
下载地址:https://www.jenkins.io/download/
官方中文文档: https://www.jenkins.io/zh/doc/
Jenkins 是什么?
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
系统要求
最低推荐配置:
- 256MB可用内存
- 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)
为小团队推荐的硬件配置:
- 1GB+可用内存
- 50 GB+ 可用磁盘空间
软件配置:
- Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
注意: 如果将Jenkins作为Docker 容器运行,这不是必需的
jenkins提供了多个平台的安装方式 这篇文章主要围绕 docker方式以及war包方式启动。
WAR安装
Jenkins的Web应用程序ARchive(WAR)文件版本可以安装在任何支持Java的操作系统或平台上。
要下载并运行Jenkins的WAR文件版本,请执行以下操作:
- 将最新的稳定Jenkins WAR包 下载到您计算机上的相应目录。
- 在下载的目录内打开一个终端/命令提示符窗口到。
- 运行命令java -jar jenkins.war 或者 把war放到 tomcat里运行
- 浏览http://localhost:8080并等到Unlock Jenkins页面出现。
- 继续使用Post-installation setup wizard后面步骤设置向导。
将最新的稳定Jenkins WAR包下载到您计算机上的相应目录。
安装之前我们需要安装一些必要的环境 tomcat jdk maven git
首先先准备好要安装的文件
(1)安装jdk环境
#把安装文件放到该目录
mkdir /home/soft
mkdir /home/java
tar -zxvf /home/soft/jdk-8u171-linux-x64.tar.gz -C /home/java
#编辑环境变量文件
vim /etc/profile
#配置java环境变量
export JAVA_HOME=/var/jenkins_home/thh/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
#环境文件生效
source /etc/profile
#查看jdk版本
java -version
(2)安装maven
mkdir /home/maven
tar -zxvf /home/soft/apache-maven-3.6.3-bin.tar.gz -C /home/maven
#编辑环境变量文件
vim /etc/profile
MAVEN_HOME=/var/jenkins_home/thh/apache-maven-3.6.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
#环境文件生效
source /etc/profile
#查看maven版本
mvn -v
(3)安装tomcat
mkdir /home/tomcat
#解压即可
tar -zxvf /home/soft/apache-tomcat-8.5.60.tar.gz -C /home/tomcat
#需要修改server.xml的文件 加上 URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
(4)安装git
#安装前先安装依赖包 不然会报错 如果装完这些依赖 编译的时候还是有错误 就自行百度 还缺哪些包
yum install openssl-devel
yum install expat-devel
yum install curl-devel -y
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
tar -zxvf /home/soft/git-2.9.5.tar.gz -C /usr/src
cd /usr/src/git-2.9.5/
##编译
make prefix=/usr/local/git all
#安装
make prefix=/usr/local/git install
vi /etc/profile
export PATH=/usr/local/git/bin:$PATH
GIT_HOME=/usr/local/git
export PATH=$PATH:$GIT_HOME/bin
source /etc/profile
(5)最终安装 war
# 先把tomcat的webapps里多余的东西清理掉,剩下一个ROOT包,然后把war复制到解压好的tomcat目录 ROOT底下
cp /home/soft/jenkins.war /home/tomcat/apache-tomcat-8.5.60/webapps/ROOT
#然后解压war
cd /home/tomcat/apache-tomcat-8.5.60/webapps/ROOT
#解压war
jar -xvf jenkins.war
#删除war
rm -f jenkins.war
cd /home/tomcat/apache-tomcat-8.5.60/bin
#启动
./startup.sh
浏览http://localhost:8080进行访问。如果访问不了 看是否是因为没有打开安全组 以及防火墙
安装后设置向导
下载安装并运行Jenkins后,即将开始进入安装向导。
此安装向导会引导您完成几个快速“一次性”步骤来解锁Jenkins, 使用插件对其进行自定义,并创建第一个可以继续访问Jenkins的管理员用户。
解锁 Jenkins
当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。
- 浏览到
http://localhost:8080
(或安装时为Jenkins配置的任何端口),并等待 解锁 Jenkins 页面出现
根据他的提示信息 去 cat +路径 查看密码
安装插件
解锁 Jenkins之后,在 Customize Jenkins 页面内, 您可以安装任何数量的有用插件作为您初始步骤的一部分。
两个选项可以设置:
- 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例.
- 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。
如果jenkins 安装插件报错的话。那么很有可能是因为 插件地址错误。
重启之前 先把设置一下全局设置里的
防止我们忘记密码无法登陆
还是要修改我们的管理员admin密码的。
一般我们会安装 这几个插件 jdk maven git gitee gitlab svn
插件的意义就是 配合我们安装的软件 来配置 软件路径的 有一些插件是为了第三方。比如钩子程序 gitee的 webhooks插件 可以实现 钩子程序 自己触发构建的效果。
配置插件
构建项目配置
(1)首先先创建一个项目
一般是由这三部组成
1.源代码管理
(2).构建发触发器(这个不是必要的)
(3)构建
(4)免密操作
#ssh免登录
ssh-keygen -t rsa 再来三次enter
cd ~
cd .ssh
拷贝相同的文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#把生成的公钥复制到需要免登陆的linux中
scp ~/.ssh/authorized_keys root@192.168.1.128:~/.ssh/authorized_keys
#第一次需要登录密码之后就不再需要
普通脚本
#!/bin/bash
echo "=================================================================================================="
echo "1.构建完成"
echo "2.首先先把war包scp到应用服务器"
echo "3.再通过docker 执行 tomcat 服务器 的脚本, 脚本内容 是 首先压缩root目录的文件 停掉tomcat 再把文件目录ROOT删除 "
echo "4.再把ROOT压缩包复制出来,重命名移动到备份文件夹"
echo "5.再把最新的WAR文件复制进去"
echo "6. 再次启动 tomcat服务器"
echo "拷贝war到应用服务器(正式环境 docker kimzpp80)"
scp /var/jenkins_home/workspace/kimzpp/target/kimzpp.war root@172.17.0.3:/opt/war
echo "拷贝完成"
ssh 172.17.0.3 -l root <<EOF
backFile="/opt/apache-tomcat-7.0.42/webapps/ROOT.war"
backPath="/opt/apache-tomcat-7.0.42/webapps/ROOT"
if [[ ! -d "/opt/apache-tomcat-7.0.42/webapps/ROOT" ]]; then
echo "备份文件夹不存在"
else
cd /opt/apache-tomcat-7.0.42/webapps
tar -czvf ROOT.tar.gz ./ROOT > /dev/null 2>&1
mv ROOT.tar.gz /opt/back/`date +%Y%m%d%H%M%S`.war
echo "备份文件压缩完毕"
echo "停止tomcat"
/opt/apache-tomcat-7.0.42/bin/shutdown.sh
rm -rf ROOT
echo "保留最新的8个文件"
cd /opt/back
./delback.sh
fi
echo "删除ROOT.war"
#判断文件是否存在
if [[ ! -f "/opt/apache-tomcat-7.0.42/webapps/ROOT.war" ]]; then
echo "ROOT文件不存在"
else
rm -f ROOT.war
echo "删除ROOT.war完成"
fi
echo "复制war到webapps"
cp /opt/war/kimzpp.war /opt/apache-tomcat-7.0.42/webapps/ROOT.war
echo "启动tomcat"
/opt/apache-tomcat-7.0.42/bin/startup.sh
echo "正式环境服务器启动完成,访问地址 http://10.24.110.243/"
exit
EOF
delback.sh
#!/bin/bash
#保留文件数
ReservedNum=2
#当前脚步所在目录
RootDir=$(cd `dirname $0`; pwd)
#显示文件数, *.*可以改为指定文件类型
FileNum=$(ls -l *.* | grep ^- | wc -l)
while(( $FileNum > $ReservedNum ))
do
#取最旧的文件,*.*可以改为指定文件类型
OldFile=$(ls -rt *.* | head -1)
echo "Delete File:"$RootDir'/'$OldFile
rm -f $RootDir'/'$OldFile
let "FileNum--"
done