1.前言
通过docker安装Jenkins,从gitee上面拉取代码.部署到另一台服务器,并用docker启动.达到一键式构建的目标 扩展功能. 1.支持版本回退. 2.限制版本数量,超出自动清理2.环境准备
Centos7.x docker jdk安装包(maven构建项目的环境,本文是1.8) maven安装包 git安装包1.jdk
jdk-8u161-linux-x64.tar.gz 上传到 /home/jdkcd /home/jdk tar -zxvf jdk-8u161-linux-x64.tar.gz mv jdk-8u161-linux-x64 jdk1.8
2.maven
apache-tomcat-8.5.50.tar.gz 上传到 /home/mavencd /home/maven tar -zxvf apache-tomcat-8.5.50.tar.gz mv apache-tomcat-8.5.50 maven
3.git
git-2.24.1.tar.gz 上传到 /home/gitcd /home/git tar -zxvf git-2.24.1.tar.gz安装git到 /home/git/git
cd /home/git/git-2.24.1 make prefix=/home/git/git all make prefix=/home/git/git install可能会遇到些问题,通过 yum安装缺少的依赖可以解决 成功安装后 会有 /home/git/git/bin/git 文件
3.Jenkins 安装
1.通过docker下载Jenkins
docker search jenkins/jenkins docker pull jenkins/jenkins
2.启动Jenkins,这步很关键,挂载目录一定要选择对
docker run -u root -d -p 18080:8080 -p 50000:50000 \ -v /home/jenkins:/var/jenkins_home \ -v /home/maven/maven:/usr/local/maven \ -v /home/git/git:/usr/local/git \ -v /home/jdk/jdk1.8:/usr/local/jdk \ -v /etc/localtime:/etc/localtime \ --name jenkins \ jenkins/jenkins将 jdk,maven,git 的目录挂载到容器
3.访问jenkins安装插件
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163023450-1062729331.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163033725-1724067825.png)
点击 安装推荐的插件. 这一步比较耗时. 完成后还需安装3个插件,chinese,publish Over ssh
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163116234-94538294.png)
4.全局工具配置
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163249005-1766643139.png)
1.jdk
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163300037-27100922.png)
2.git
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163314249-1369807867.png)
3.maven
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163321888-1999148382.png)
5.系统配置
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163329264-2005807479.png)
java环境变量
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163354173-291742657.png)
ssh服务器配置.就是项目最终要部署的服务器 这里可以通过 账号密码配置, 也可以通过 sha免密登录.之后的 链接gitee也会说明
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163403349-1779244791.png)
6.新建任务
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163451854-38879214.png)
1.General
增加两个参数, 一个选项 一个字符就可以. 用于 版本构建和回退![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163513631-807541094.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163522638-150336144.png)
2.源码管理. 又一个难点
配置之前需要先进入容器生成 秘钥docker exec -it jenkins /bin/bash ssh-keygen -t rsa #之后一路回车
cd /root/.ssh/
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163726114-1715936540.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163734454-933854790.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163743572-694776495.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163751015-994226602.png)
3.Pre Steps
有可能pom不是根目录,自行修改clean install -Dmaven.test.skip=true
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115163826081-1882528177.png)
4.Post Steps
这个地方是重点 需要配置3个 1.构建和回退脚本 2.把jar包上传到远程服务器并执行docker.sh脚本启动 3.删除多余备份版本,只保留8个![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115164101295-1790040169.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115164109091-1593764717.png)
case $status in go) echo "status:$status" path="../his/${BUILD_NUMBER}" #创建每次要备份的目录,可以自行更改 if [ -d $path ]; then echo "The files is already exists " else mkdir -p $path fi \cp -r ${WORKSPACE}/* $path #复制当前版本代码到历史文件夹 #composer update echo "Completing!" ;; back) echo "status:$status" echo "version:$version" rm -rf ${WORKSPACE}/* #删除工作空间代码 cd ../his/$version #进入备份目录 echo $version #输出获取的版本号 \cp -r ./* ${WORKSPACE}/ #拷贝历史版本至工作空间 ;; *) exit ;; esac
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115164204426-227674656.png)
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115164212294-1091951107.png)
cd ../his/ #进入备份的目录 ls -t |awk 'NR>2'|xargs rm -rf #先安装时间排序,然后保留前8个历史版本
4.项目服务器docker文件
登录到项目需要部署的服务器,
在项目的文件夹新建两个文件 Dockerfile 和 docker.sh
cd /home/ticket ls
FROM openjdk:8-jre #基础镜像 #指定dev,指定nacos注册地址&配置中心地址 ENV PARAMS="--server.port=8080 --spring.profiles.active=dev --spring.cloud.nacos.discovery.server-addr=10.19.32.75:18848 --spring.cloud.nacos.config.server-addr=10.19.32.75:18848 --spring.cloud.nacos.config.namespace=test --spring.cloud.nacos.config.file-extension=yml" RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone # 统一改名app.jar COPY *.jar /app.jar EXPOSE 8080 #传入环境变量 ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]
docker.sh 构建脚本
#!/bin/bash #变量声明 APP_NAME="ticket" APP_PORT="8080" echo 1-停止启动服务 docker stop ${APP_NAME} docker stop ${APP_NAME} echo 2-删除服务 docker rm ${APP_NAME} docker rm ${APP_NAME} echo 3-删除镜像 docker rmi ${APP_NAME} docker rmi ${APP_NAME} echo 4-构建新镜像 docker build -t ${APP_NAME} . docker build -t ${APP_NAME} . echo 5-启动新镜像 docker run -d -p ${APP_PORT}:8080 --name ${APP_NAME} ${APP_NAME} echo 6-脚本执行完成
5.一键构建
![](/i/l/?n=22&i=blog/1205818/202211/1205818-20221115164608349-399404380.png)
标签:git,另一台,APP,gitee,jenkins,home,docker,echo,搞懂 From: https://www.cnblogs.com/changhai/p/16892979.html