乐趣区

关于jenkins:记录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
  6. 在浏览器拜访http:// 主机 ip:8001,如果呈现上面页面示意胜利
  7. 执行命令docker logs jenkins,复制日志文件中的明码。
  8. 浏览器拜访http:// 主机 ip:8001,到方才复制的明码,粘贴到输入框中。
  9. 点击 continue,呈现以下页面,抉择默认选项(装置举荐插件),持续即可。
  10. 期待插件装置实现,如果有装置失败的,多试几次就行。(也能够前面再装置)
  11. 插件装置结束后,会主动进入到创立账号的页面。咱们这里为了疾速进行,间接抉择 应用 admin 账户持续
  12. 设置 jenkins 的门路,咱们默认持续即可
  13. 点击 开始应用 jenkins,即可进入 jenkins 治理面板

应用 Jenkins 部署 Java 我的项目

  1. 点击Manage Jenkins,进入 jenkins 治理
  2. 抉择Manage Plugins,进入 jenins 插件治理
  3. 抉择Available,进行插件搜寻装置
  4. 搜寻maven,勾选第一个Maven Integration,最初抉择Download now...restart.
  5. 期待插件下载实现,最初抉择 闲暇时重启 即可

    jenkins 装置插件可能重启可能会呈现挂掉的状况,这个时候咱们只须要手动执行 docker start jenkins 即可。

  6. 同理装置插件Publish Over SSH
  7. 重启进入 jenkins 后,咱们从新进入 Manager Jenkins,点击进入 治理用户
  8. 抉择 admin 旁边的小齿轮,而后下滑找到 明码 项。批改明码,保留即可。
  9. 重登 jenkins,点击进入Manage Credentials,进行全局账号密码配置

  10. 抉择 增加一些凭证 ,设置 账号 明码

    • 其中 id,为凭证的惟一标识符,只有保障惟一不反复即可。
    • 形容用于标识这个凭证是干什么的,例如图中的 [email protected],就意思为xiaoYan 主机 的账号密码
  11. 依照上一步,咱们同样增加一条用于 gitlab 认证的凭证记录
  12. 再次进入 Manager Jenkins,点击进入 系统配置 。而后始终下拉到最初,找到SSH Servers 配置项,点击新增。依照下图批示配置结束后,点击保留退出即可。

    • name: 给主机起一个名字
    • Hostname: 主机 ip
    • Username: 主机用户名
    • Remote Directory: 主机默认目录
    • Passphrase / Password:主机用户明码
  13. 这次咱们来配置 全局工具配置

    首先配置全局默认 maven 配置文件,门路填写 jenkins 同主机上的 maven 配置文件门路

    而后配置 Java 目录,如果呈现图中的提醒,示意主机的 Java 目录并没有挂载到 docker 容器的 Jenkins 中。所以须要咱们进行将 /usr/local/java 手动挂载到 Jenkins 中。(如果后面的命令没有错,这里不会呈现这种状况的。然而我本人执行的过程中命令有偏差,导致了 java 目录没有被正确挂载上)

    手动挂载 Docker 目录:https://segmentfault.com/a/11…
    在配置 git 目录。在 jenkins 主机上执行 whereis git,失去git 命令所在目录。

    最初配置一下 maven 目录。

    保留退出即可。

  14. 终于到了配置 Java 我的项目的时候了,点击 新建我的项目
  15. 抉择maven 格调,输出项目名称(这个名称会是 jenkins 下 workspeace 的工程目录)
  16. 增加形容
  17. 配置 gitlab 地址,其中 Credentials 抉择咱们之前在全局 Credentials 配置的 gitlab 认证,分支抉择咱们须要打包部署的分支。
  18. 配置SSH Publishers,即 jar 包打包的动作
  19. 配置Build,即构建须要的我的项目 pom.xml 文件,和打包命令。
  20. 保留退出,点击 立刻构建。等等呈现绿色小对钩,即示意构建胜利。
  21. 登录部署 jar 包的服务器,查看 jar 包有没有被正确的打包发送过指定得目录。java 服务有没有被正确的启动起来。

踩坑

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

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

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

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

# 重启 jenkins 容器
docker restart jenkins
退出移动版