前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker安装Jenkins实现自动化部署Maven项目

Docker安装Jenkins实现自动化部署Maven项目

作者头像
Mshu
发布2022-03-22 14:19:45
2.7K0
发布2022-03-22 14:19:45
举报
文章被收录于专栏:咸鱼不闲咸鱼不闲

Jenkins version 2.277.4 Docker version 20.10.5

安装Jenkins

docker 安装一切都是那么简单,注意检查8080是否已经占用!

代码语言:javascript
复制
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

如果没改端口号的话

安装完成后访问地址-> http://{部署jenkins所在服务IP}:8080

初始化Jenkins

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

第一个简单的任务

小试牛刀,先创建简单的任务,任务内容:执行服务器的shell脚本或Linux命令。

由于jenkins 部署在docker容器内,没办法直接执行宿主机上的shell脚本,需要ssh登录到宿主机上执行。这就需要Publish Over SSH插件。(如果Jenkins不是用docker部署的就不会有这个烦恼)同样的道理,如果jenkins和项目不在一台服务器也可以使用这个插件,远程拷贝打包的文件或者执行脚本等。

安装插件

首页->系统管理->插件管理->搜索Publish Over SSH并安装.

配置 Publish Over SSH

首页->系统管理->系统配置->

创建任务

首页->新建任务->填写任务名称->选择:构建一个自由风格的软件项目

直接在切到【构建】选项卡,点击【添加构建步骤】选择Send files or execute commands over SSH

在SSH service下面选择刚刚在【系统配置】配置的服务器。

Exec command一栏直接输入命令即可,不妨可以试试echo $(pwd)命令。

保存,第一个任务建成功了,回到任务详情页,点击立即构建,找到【控制台输出】可以看到执行详情。

创建一个自动化部署maven项目的任务

原理:jenkins用git插件将项目拉下来,用Maven Integration插件打包,用Publish Over SSH插件将打包的jar或者文件夹发送到部署项目的服务器,并执行shell脚本启动~

先决条件:

  1. git插件:在初始化的时候就默认安装的;
  2. Maven Integration插件:安装方法同上;
  3. Maven配置:首页->系统管理->全局工具配置,勾选自动安装,选择maven版本即可;
  4. Publish Over SSH: 创建上一个任务的安装/配置过了;
git拉取代码

同样创建任务,来到配置页面,切到【源码管理】选项卡配置仓库地址和密钥:

这个时候可以保存并点击立即构建看看代码能否拉下来。

Maven 打包

切到【构建】选项卡,点击【添加构建步骤】选择“调用顶层 Maven 目标

maven版本选择在【全局工具配置】里面配置的maven,如果没有就是你不配,不,是你没配!

目标一栏填写打包命令:clean install -Dmaven.test.skip=true,或者根据情况填写。

这个时候可以保存并点击立即构建看看代码能否正常打包。

运行启动脚本

代码拉下来了,jar也打包好了,但是jar包在容器里面,可以在【构建】模块添加个Send files or execute commands over SSH,使用Source filesRemote directory传输jar文件,但是我部署jenkins的docker和部署项目的服务器是同一台,使用docker cp 命令就可以将docker容器里面的jar文件拷贝出来,并和启动项目的脚本写在一起。就省去了文件传输,直接执行脚本即可。

docker cp详见《蛮吉学 Docker》

一个自动化部署maven项目的任务就创建完了

Send files or execute commands over SSH的文件传输功能

Source files(任务的工作空间目录):就是代码拉下来的根目录,如果要传输文件夹用**表示

Remote directory(登录项目服务器的家目录):ssh登录的家目录,比如root登录这个目录就是/root,且文件只能传输到这个目录下或这个目录的下级目录!

Exclude files:不传输的文件。可以过滤不需要的文件比如README.md.gitignore

多个用逗号隔开,保证Pattern separator配置的是[, ]+

注意事项

  1. 【系统配置】里配置Publish Over SSH,SSH服务器的登录用户最好用root,否则执行脚本可能会权限不足!
  2. Send files or execute commands over SSH 的文件传输功能配置的Remote directory只能是用户的家目录!
  3. docker部署的Jenkins不能直接运行宿主机上的shell脚本,且拉取的代码,打包的文件都在docker容器内!要借助Publish Over SSH插件。
  4. 宿主机不需要安装git、maven!
  5. 如果直接执行启动jar的脚本正常,Jenkins执行脚本报错nohup: failed to run command java: No such file or directory,前面加一行source /etc/profile可以解决。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装Jenkins
  • 初始化Jenkins
  • 第一个简单的任务
    • 安装插件
      • 配置 Publish Over SSH
        • 创建任务
        • 创建一个自动化部署maven项目的任务
          • git拉取代码
            • Maven 打包
              • 运行启动脚本
                • Send files or execute commands over SSH的文件传输功能
                • 注意事项
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档