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安装插件
去 /home/jenkins/secrets/initialAdminPassword 中找密码点击 安装推荐的插件. 这一步比较耗时. 完成后还需安装3个插件,chinese,publish Over ssh
4.全局工具配置
1.jdk
2.git
3.maven
5.系统配置
java环境变量
ssh服务器配置.就是项目最终要部署的服务器 这里可以通过 账号密码配置, 也可以通过 sha免密登录.之后的 链接gitee也会说明
6.新建任务
1.General
增加两个参数, 一个选项 一个字符就可以. 用于 版本构建和回退
2.源码管理. 又一个难点
配置之前需要先进入容器生成 秘钥docker exec -it jenkins /bin/bash ssh-keygen -t rsa #之后一路回车
cd /root/.ssh/
id_rsa: 私钥. 用于在Jenkins中填写 id_rsa.pub:公钥. 需要在 gitee中配置
3.Pre Steps
有可能pom不是根目录,自行修改clean install -Dmaven.test.skip=true
4.Post Steps
这个地方是重点 需要配置3个 1.构建和回退脚本 2.把jar包上传到远程服务器并执行docker.sh脚本启动 3.删除多余备份版本,只保留8个
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
cd ../his/ #进入备份的目录 ls -t |awk 'NR>2'|xargs rm -rf #先安装时间排序,然后保留前8个历史版本
4.项目服务器docker文件
登录到项目需要部署的服务器,
在项目的文件夹新建两个文件 Dockerfile 和 docker.sh
cd /home/ticket ls
Dockerfile
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.一键构建
标签:git,另一台,APP,gitee,jenkins,home,docker,echo,搞懂 From: https://www.cnblogs.com/changhai/p/16892979.html