jenkins 自动化部署 java|docker|git(2023)

参考

https://www.jenkins.io/doc/book/installing/docker/
https://blog.csdn.net/zqqiang0307/article/details/120458586
https://juejin.cn/post/7076660335863660557#heading-11
https://www.cnblogs.com/sxw123/p/16614940.html
https://juejin.cn/post/6854573218687746062

一、安装 docker

docker 安装社区版本CE

1. 确保 yum 包更新到最新。

yum update

2. 卸载旧版本 (如果安装过旧版本的话)

yum remove docker docker-common docker-selinux docker-engine

3. 安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

4. 设置 yum 源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5. 安装 docker

yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 yum install <自己的版本> # 例如:sudo yum install docker-ce-17.12.0.ce

6. 启动和开机启动

systemctl start docker systemctl enable docker

8. 验证安装是否成功

docker version

二、安装 Jenkins

Jenkins 中文官网 ->https://www.jenkins.io/zh/

1. 安装 Jenkins

docker 安装一切都是那么简单,注意检查 8080 是否已经占用!如果占用修改端口
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /opt/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
如果没改端口号的话
安装完成后访问地址 -> http://{部署Jenkins所在服务IP}:8080
此处会有几分钟的等待时间。

2. 初始化 Jenkins

详情见官网教程 ->https://www.jenkins.io/zh/doc…

2.1 解锁 Jenkins

  • 进入Jenkins容器:docker exec -it {Jenkins容器名} bash - 例如 docker exec -it jenkins bash - 查看密码:cat /var/lib/jenkins/secrets/initialAdminPassword - 复制密码到输入框里面
    image.png

2.2 安装插件

  • 选择第一个:安装推荐的插件

image.png

2.3 创建管理员用户

  • 此账户一定要记住哦

三、系统配置

1. 安装需要插件

进入【首页】–【系统管理】–【插件管理】–【可选插件】
搜索以下需要安装的插件,点击安装即可。
image.png

  • 安装 Maven Integration
  • 安装 Publish Over SSH(如果不需要远程推送,不用安装)
  • 如果使用 Gitee 码云,安装插件 Gitee(Git 自带不用安装)

2. 配置 Maven

进入【首页】–【系统管理】–【全局配置】,拉到最下面 maven–maven 安装
image.png

四、创建任务

1. 新建任务

点击【新建任务】,输入任务名称,点击构建一个自由风格的软件项目
image.png

2. 源码管理

点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。
image.png
image.png

3. 构建触发器

点击【构建触发器】–【构建】–【增加构建步骤】–【调用顶层 Maven 目标】–【填写配置】–【保存
image.png
此处命令只是 install,看是否能生成 jar 包
clean install -Dmaven.test.skip=true
image.png

4. 保存

点击【保存】按钮即可

五、测试

该功能测试是否能正常打包

1. 构建

点击构建按钮
image.png

2. 查看日志

点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成 jar 包。
该处日志第一次可能下载依赖 jar 包失败,再次点击构建即可成功。
image.png
image.png
image.png

3. 查看项目位置

1.cd /var/jenkins_home/workspace 2.ll 即可查看是否存在

六、运行项目

因为我们项目和 jenkins 在同一台服务器,所以我们用 shell 脚本运行项目,原理既是通过 dockerfile 打包镜像,然后 docker 运行即可。

1. Dockerfile

在 springboot 项目根目录新建一个名为 Dockerfile 的文件,注意没有后缀名,其内容如下:(大致就是使用 jdk8,把 jar 包添加到 docker 然后运行 prd 配置文件。详细可以查看其他教程)
FROM jdk:8 VOLUME /tmp ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8888 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]

2. 修改 jenkins 任务配置

image.png
配置如下:
image.png

  • -t:指定新镜像名
  • .:表示 Dockfile 在当前路径

cd /var/jenkins_home/workspace/zx-order-api docker stop zx-order || true docker rm zx-order || true docker rmi zx-order || true docker build -t zx-order . docker run -d -p 8888:8888 --name zx-order zx-order:latest
备注:
1.我上图用了docker logs -f 是为了方便看日志,真实不要用,因为会一直等待日志,构建任务会失败
2.加|| true 是如果命令执行失败也会继续实行,为了防止第一次没有该镜像报错

3. 保存

点击保存即可

4. 构建

查看 jenkins 控制台输出,输出如下,证明成功!
image.png

5. 验证

1.docker ps 查看是否有自己的容器 2. docker logs 自己的容器名 查看日志是否正确 3. 浏览器访问项目试一试

扩展

启动命令

docker run --name jenkins -d -p 3000:8080 -p 3100:50000 \
-u root \
-v /opt/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
jenkinsci/blueocean

安装完打开 ip:30000

需要输入密码解锁 Jenkins

查看密码


# 进入容器
docker exec -it jenkins bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

401358610b1646e198ea0a8a08b46bf6

通过 webhook 自动构建发布

设置通知地址
image.png
我的 jenkins 网址是 http://cd.eggcode.top,拼接后的结果是:http://cd.eggcode.top/job/sense-boot/build?token=123456
在仓库设置事件,这里我用的是腾讯的coding仓库,设置如下:
image.png
用户名和密码是 jenkins 登录账号和密码。

更换插件下载源

https://blog.csdn.net/DDJ_TEST/article/details/121350448

反向代理

https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-troubleshooting/

远程执行命令

1、新增服务ssh
进入设置
5bb9284a6e8d5ba613d0024a1502cb9.png

新增服务器信息
e0cb2f72df2c2a909928e664568c283.png
2、设置远程执行shell
1661587687649.png
e9320adb0d9f82587043aa5bfd9b44a.png

参考:
https://www.youtube.com/watch?v=5G93_FgqtPc
https://blog.csdn.net/weixin_43221608/article/details/109639073
命令

#jenkins任务名
SERVICE_NAME=platform-wuad

function login(){
# 测试 能登录上镜像服务器
docker login 192.xxx.xx.25
}
#镜像上传及拉去
function pushpull(){

docker pull 192.xxx.xx.25/testone/$SERVICE_NAME:latest

}

 

#=====================================================================================
#==============================运行测试服务器的docker容器,启动服务===============================
#=====================================================================================


# 运行docker容器
 function run(){
    login
    pushpull
	
	docker run -d --name $SERVICE_NAME -p 8888:8080  192.xxx.xx.25/testone/$SERVICE_NAME:latest

}
#入口
run

远程部署

1、推送应用包
2、运行
https://juejin.cn/post/7000534516410351646
https://blog.csdn.net/m0_46144826/article/details/120805890
https://tendcode.com/article/Publish-Over-SSH
https://blog.csdn.net/jams0911/article/details/113886593

posted @ 2023-04-21 10:11  EggCode  阅读(121)  评论(0编辑  收藏  举报