环境筹备

  • 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_bakcp -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/javachown -R 1000:1000 /usr/local/apache-maven-3.6.3chown -R 1000:1000 /usr/local/jenkinschown -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/timezoneexit# 重启jenkins容器docker restart jenkins