持续集成,Continuous Integration,简称CI,是一种软件开发实践,在实践中指只要代码有变更,就自动运行构建和测试。
Jenkins 是一个开源的、提供友好操作界面的持续集成 CI 工具。
部署流程。
用户提交代码到 Git 仓库;
Jenkins 服务器从指定 Git 仓库拉去代码,使用 maven 编译打包。
Jenkins 服务器 ssh 连接应用服务器,将打包好的 war 或者 jar 包传送到应用服务器指定位置,例如 tomcat/webapps。
资源准备并传输到 linux 虚拟机。
// linux 虚拟机新建文件夹
cd /
mkdir jenkinsoft
// mac 传输文件到虚拟机。maven、tomcat、git、jenkins 的 linux 版本需要自己下载;plugins 是 jenkins 的插件,包含 git、Deploy to container等。
scp /Users/ly/Downloads/持续集成/apache-maven-3.6.3-bin.tar.gz root@10.36.144.110:/jenkinsoft
scp /Users/ly/Downloads/持续集成/apache-tomcat-8.5.57.tar.gz root@10.36.144.110:/jenkinsoft
scp /Users/ly/Downloads/持续集成/git-2.10.0.tar.gz root@10.36.144.110:/jenkinsoft
scp /Users/ly/Downloads/持续集成/jenkins.war root@10.36.144.110:/jenkinsoft
scp /Users/ly/Downloads/持续集成/plugins.zip root@10.36.144.110:/jenkinsoft
安装 Jenkins。
解压 tomcat 并将 jenkens.war 放入 tomcat/webapps。
修改 tomcat 的8081ip、8015shutdown、8019AJP。
cd jenkinsoft
// 解压
tar -zxf apache-tomcat-8.5.57.tar.gz
// 移动
mv jenkins.war apache-tomcat-8.5.57/webapps
// 修改端口号等
vi apache-tomcat-8.5.57/conf/server.xml
// 启动 tomcat
apache-tomcat-8.5.57/bin/startup.sh
// 关闭 tomcat
// apache-tomcat-8.5.57/bin/shutdown.sh
// 停止 docker 的 tomcat,免得干扰
docker stop $(docker ps -aq)
// 浏览器访问, ip地址改成自己的。
ip a
http://10.36.144.110:8081/jenkins
// 运行浏览器页面显示的命令拿到密码
cat /root/.jenkins/secrets/initialAdminPassword
// 浏览器里粘贴密码 然后 continue
// 输入用户名 admin,密码。
// 关闭tomcat 重新打开,刷新浏览器就进入 jenkins 管理界面
// 不要选择安装插件
安装 Git。链接,https://mirrors.edge.kernel.org/pub/software/scm/git/。
// 解压
tar -zxf git-2.10.0.tar.gz
// 安装 Git 所需要的组件
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install -y gcc perl-ExtUtils-MakeMaker
//删除系统的 Git,这行命令一定要执行
yum remove git
cd git-2.10.0
// 编译
make prefix=/usr/local/git all
// 安装
make prefix=/usr/local/git install
// 配置环境变量
vim /etc/profile
export GIT=/usr/local/git
export PATH=$JAVA_HOME/bin:$GIT/bin:$PATH
source /etc/profile
// 测试
git --version
安装 Maven。
tar -zxf apache-maven-3.6.3-bin.tar.gz
// 配置环境变量
vim /etc/profile
export MAVEN_HOME=/jenkinsoft/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$GIT/bin:$MAVEN_HOME/bin:$PATH
source /etc/profile
// 测试
mvn --version
// 配置阿里云私服
vi apache-maven-3.6.3/conf/settings.xml
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
Manage Jenkins -> 全局安全配置,取消认证。
Manage Jenkins -> 插件管理,安装 git 插件。由于网络或版本原因,安装不成功。可以直接拖安装好的插件。
// 当前 yum 是否安装了 zip/unzip
yum list | grep zip/unzip
// 安装zip 根据提示输入 y 允许安装
yum install zip
// 安装unzip 根据提示输入y允许安装
yum install unzip
// 解压
unzip plugins.zip
// 删除已有的插件
rm -rf /root/.jenkins/plugins
// 移动
mv plugins /root/.jenkins
关闭 tomcat 服务,重新打开。多试几次。然后刷新 jenkins 管理界面。全局工具配置里出现 git 代表成功。
创建 java 测试项目并 gitee 管理。
配置 git 路径。添加 gitee 的用户名和密码。
配置 Maven 构建命令。
准备部署服务器。配置 tomcat 用户。
vi apache-tomcat-8.5.57/conf/tomcat-users.xml
// 用户名和密码都是 tomcat,可更改
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
// 注释或删除 Value 标签
vi apache-tomcat-8.5.57/webapps/manager/META-INF/context.xml
Jenkins 项目点击构建。
查找构建的 war 包地址。
配置项目远程发布。
Jenkins 项目再次构建。
浏览器中输入 http://10.36.144.110:8081/demo1/ 测试是否构建成功。
配置自动构建项目。
配置 jenkins 的构建 token,地址就是http://10.36.144.110:8081/jenkins/job/jenkins_demo1/build?token=123
更改代码并上传gitee,浏览器中输入地址运行。等构建完成后刷新 http://10.36.144.110:8081/demo1/ 测试。
在 gitee 项目仓库点击最右侧管理,点击 webhooks。由于现在是本地服务器地址,所以要进行内网穿透。
使用 natapp 设置内网穿透。
登录申请一个免费的隧道,记住 token。
下载 natapp mac客户端。双击,在系统偏好设置 -> 安全性与隐私里放行。
chmod 777 natapp
// token 为 natapp 隧道 token。
./natapp -authtoken=token
自动弹出该页面,记住域名,并且不要关闭该页面。
webhooks 里配置。
设置Jenkins跨域。
更改代码并上传gitee,等构建完成后刷新 http://10.36.144.110:8081/demo1/ 测试。