使用Jenkins优雅部署Java项目【超级详细的实战教程】

环境准备

  • centos 7
  • Java 1.8
  • Maven 3.6.3
  • Docker 20.10.17
  • Gitlab gitlab-ce:14.0.5-ce.0
  • Jenkins 2.60.3(强烈建议,其他版本有坑)

Jenkins相关依赖环境安装

Java环境安装

虽然我们是采用docker的方式安装Jenkins,所有的依赖镜像都已经打包好了。但是我们在后续使用Jenkins的过程中,会采用Jenkins主机上的Java运行环境,所以我们还是要安装一下java JDK8、并且配置一下环境变量。

推荐教程:https://segmentfault.com/a/11...

maven环境安装

推荐教程:https://segmentfault.com/a/11...

部署docker安装

推荐教程:https://segmentfault.com/a/11...

Gitlab安装

推荐教程:https://segmentfault.com/a/11...

部署jenkins(基于docker)

我们可以自己在本机上部署jenkins,也可以使用docker进行部署,这次我们选择docker来部署。

  1. 备份一下/usr/local/java目录和/usr/local/apache-maven-3.6.3目录里面的

    cp -r /usr/local/java /usr/local/java_bak
    cp -r /usr/local/apache-maven-3.6.3 /usr/local/apache-maven-3.6.3_bak
  2. 执行以下命令即可:

    docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /etc/local/java:/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins:2.46.3
    可以尝试在命令中加入-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai,这样可以解决Jenkins时区不对的问题(待测试),也可以在部署后采用文中最后解决方案。
    其中要注意的是:
    • 挂载/usr/local/jenkinsHome是jenkins的主目录
    • 挂载/etc/localtime目录是为了容器内的jenkins与主机时间一致;
    • 挂载/etc/local/java是同步主机的java到容器中的jenkins(不然后面会有坑)
    • 挂载/usr/local/apache-maven-3.6.3是同步主机的maven到容器中的jenkins(不然后面会有坑)

    下面是命令的解释:

    docker run -d   
     -p 8001:8080\ # 将容器中的端口8080,挂载到主机端口8001
     -p 8002:50000\ # 将容器中的端口50000,挂载到主机端口8002
     -v /usr/local/jenkins:/var/jenkins_home\ # 将容器中的目录/var/jenkins_home,挂载到主机目录/usr/local/jenkins
     -v /etc/localtime:/etc/localtime\ # 将容器中的目录/etc/localtime,挂载到主机目录/etc/localtime
     -v /etc/local/java:/etc/local/java\ # 将容器中的目录/etc/local/java,挂载到主机目录/etc/local/java
     -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3\ # 将容器中的目录/usr/local/apache-maven-3.6.3,挂载到主机目录/usr/local/apache-maven-3.6.3
     --name jenkins\ # 给容器命名为jenkins
     jenkins:2.46.3 # 选择镜像
  3. 执行命令docker ps,我们会发现jenkins并没有被启动起来。这是因为我们刚才挂载的目录,jenkins容器并没有访问启动。所以,我们需要给挂载的目录给予权限。

    chown -R 1000:1000 /usr/local/java
    chown -R 1000:1000 /usr/local/apache-maven-3.6.3
    chown -R 1000:1000 /usr/local/jenkins
    chown -R 1000:1000 /etc/localtime
  4. 重新执行下面命令,以启动jenkins。

    docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/local/java:/usr/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins:2.46.3
  5. 查看jenkins是否启动成功,执行命令docker ps,查看是否有jenkins
    image.png
  6. 在浏览器访问http://主机ip:8001,如果出现下面页面表示成功
    image.png
  7. 执行命令docker logs jenkins,复制日志文件中的密码。
    image.png
  8. 浏览器访问http://主机ip:8001,到刚才复制的密码,粘贴到输入框中。
    image.png
  9. 点击continue,出现以下页面,选择默认选项(安装推荐插件),继续即可。
    image.png
  10. 等待插件安装完成,如果有安装失败的,多试几次就行。(也可以后面再安装)
    image.png
  11. 插件安装完毕后,会自动进入到创建账号的页面。我们这里为了快速进行,直接选择使用admin账户继续
    image.png
  12. 设置jenkins的路径,我们默认继续即可
    image.png
  13. 点击开始使用jenkins,即可进入jenkins管理面板
    image.png
    image.png

使用Jenkins部署Java项目

  1. 点击Manage Jenkins,进入jenkins管理
    image.png
  2. 选择Manage Plugins,进入jenins插件管理
    image.png
  3. 选择Available,进行插件搜索安装
    image.png
  4. 搜索maven,勾选第一个Maven Integration,最后选择Download now...restart.
    image.png
  5. 等待插件下载完成,最后选择空闲时重启即可
    image.png
    jenkins安装插件可能重启可能会出现挂掉的情况,这个时候我们只需要手动执行docker start jenkins即可。
  6. 同理安装插件Publish Over SSH
    image.png
  7. 重启进入jenkins后,我们重新进入Manager Jenkins,点击进入管理用户
    image.png
    image.png
  8. 选择admin旁边的小齿轮,然后下滑找到密码项。修改密码,保存即可。
    image.png
    image.png
  9. 重登jenkins,点击进入Manage Credentials,进行全局账号密码配置
    image.png
    image.png
    image.png
  10. 选择添加一些凭证,设置账号密码
    image.png
    image.png

    • 其中id,为凭证的唯一标识符,只要保证唯一不重复即可。
    • 描述用于标识这个凭证是干什么的,例如图中的host@xiaoYan,就意思为xiaoYan 主机的账号密码
  11. 按照上一步,我们同样添加一条用于gitlab认证的凭证记录
    image.png
  12. 再次进入Manager Jenkins,点击进入系统配置。然后一直下拉到最后,找到SSH Servers配置项,点击新增。按照下图指示配置完毕后,点击保存退出即可。
    image.png
    image.png

    • name: 给主机起一个名字
    • Hostname: 主机ip
    • Username: 主机用户名
    • Remote Directory: 主机默认目录
    • Passphrase / Password:主机用户密码
  13. 这次我们来配置全局工具配置
    image.png
    首先配置全局默认maven配置文件,路径填写jenkins同主机上的maven配置文件路径
    image.png
    然后配置Java目录,如果出现图中的提示,表示主机的Java目录并没有挂载到docker容器的Jenkins中。所以需要我们进行将/usr/local/java手动挂载到Jenkins中。(如果前面的命令没有错,这里不会出现这种情况的。但是我自己执行的过程中命令有偏差,导致了java目录没有被正确挂载上)

    手动挂载Docker目录:https://segmentfault.com/a/11...
    在配置git目录。在jenkins主机上执行whereis git,得到git命令所在目录。
    image.png
    最后配置一下maven目录。
    image.png
    保存退出即可。
  14. 终于到了配置Java项目的时候了,点击新建项目
    image.png
  15. 选择maven风格,输入项目名称(这个名称会是jenkins下workspeace的工程目录)
    image.png
  16. 添加描述
    image.png
  17. 配置gitlab地址,其中Credentials选择我们之前在全局Credentials配置的gitlab认证,分支选择我们需要打包部署的分支。
    image.png
  18. 配置SSH Publishers,即jar包打包的动作
    image.png
  19. 配置Build,即构建需要的项目pom.xml文件,和打包命令。
    image.png
  20. 保存退出,点击立即构建。等等出现绿色小对钩,即表示构建成功。
    image.png
  21. 登录部署jar包的服务器,查看jar包有没有被正确的打包发送过指定得目录。java服务有没有被正确的启动起来。
    image.png

踩坑

Jenkins时区不对,差8个小时,解决方案

# 进入容器
docker exec -it -u root jenkins bash

#修改容器时区
echo  'Asia/Shanghai' > /etc/timezone

# 查看修改后的容器时区
cat /etc/timezone
exit

# 重启jenkins容器
docker restart jenkins

你可能感兴趣的:(使用Jenkins优雅部署Java项目【超级详细的实战教程】)