万字干货! 使用docker部署jenkins和gitlab


阅读本文, 需要有基础的Git, Linux, Docker, Java, Maven, shell知识, 并最少有一台内存16G以上并已经安装好了Docker的机器.

  • http://服务器地址:35080 进入Gitlab的登录页面, 默认用户名为root, 密码通过docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password查看.

    在主页点击 头像 -> Preferences -> SSH Keys 可以配置SSH密钥.

    在主页点击 头像 -> Preferences -> Password 可以修改密码.

    5.3 上传项目

    GitLab配置好之后就可以推送代码了, 在推送代码前, 需要GitLab有对应的项目, 我们先来新建一个项目,
    点击主页右上角加号 -> New project -> Create blank project新建一个项目.

    接下来推送代码. 大家可以推送自己的项目; 我也准备了一个简单的Spring Boot项目, 地址为 https://github.com/yuanpeilin/spring-boot-demo, 项目比较简单, 就一个类, 访问URL:8080/hello就能返回当前时间.

    这里比较简单不做过多描述, 唯一需要注意的是, 我给了一个GitHub地址, 如果用的是我的GitHub项目, 不注意的话推送到GitLab会失败, 因为从GitHub clone已经用了origin这个名字了, 推送到GitLab要换个名字, 下述三条命令中的origin随便改个名字, 把三条命令的origin改成一样的就行.

    $$ git remote add origin ssh://git@127.0.0.1:35022/root/gitlab-test.git
    
    $$ git remote set-url origin ssh://git@dell.com:35022/root/gitlab-test.git
    
    $$ git push -u origin HEAD
    

    6. 联动

    6.1 手动触发Jenkins

    在Jenkins主页点击 新建项目 -> 构建一个maven项目

    接下来就到了配置界面模块

    • 源码管理要选择Git
    • Repository URL要填从GitLab复制来的HTTP形式URL, 例如http://gitlab/root/spring-boot-demo.git, 填完之后点击下空白的地方, 可能会有报错, 这是因为git仓库可能被设置为私有的, 要有权限才能访问
    • 点击下方的Credentials模块的添加GitLab的用户名和密码, 再次点击空白处, 红色的报错已经消失了


    下一步配置post step模块, 这是在Jenkins构建好jar包后执行的操作, 点击Add post-build step选择Send build artifacts over SSH

    • SSH Server选择http://服务器地址/hello , 能看到返回了, 就说明应用已经启动好了.

      6.2 通过GitLab自动出发Jenkins构建

      点击Jenkins主页的 Item -> 配置 -> 构建触发器, 勾选上触发远程构建, 填入token, 随便填入一个值就可以, 这里设置为aabbcc

      配置Token的下方提示了我们可以用JENKINS_URL/job/spring-boot-demo/build?token=TOKEN_NAME触发, 现在我们再开启一个无痕窗口, 输入服务器地址:37808/job/spring-boot-demo/build?token=aabbcc, 发现要登录?!

      之前我们安装了一个Build Authorization Token Root插件, 这是因为默认情况下远程出发jenkins需要登录, 有了这个插件不需要登录也可以出发Jenkins构建. 再到浏览器开个无痕窗口, 根据这个插件的文档, 我们访问的地址与上面有所区别, 访问 http://服务器地址:37808/buildByToken/build?job=spring-boot-demo&token=aabbcc , 然后我们回到Jenkins会发现已经在构建项目了.

      现在就简单了, 回到Gitlab, 在主页点击头像 -> Settings -> Web Hooks, 在URL中填入http://服务器地址:37808/buildByToken/build?job=spring-boot-demo&token=aabbcc, 并取消勾选 Enable SSL verification, 点击保存就可以了.

      现在再随便改点代码, 执行git push 远程仓库名, 将代码推送到GitLab后, GitLab会自动往配置的地址发生请求, Jenkins就会出发构建, 构建好了后就会自动换包并重启应用, 至此, 大功告成!!!

      7. 参考

      1. 【尚硅谷】Jenkins教程(从配置到实战) https://www.bilibili.com/video/BV1bS4y1471A/?p=16&share_source=copy_web&vd_source=1df973656734dfeb952c3969e308a1d1
      2. Build Authorization Token Root插件文档 https://plugins.jenkins.io/build-token-root/
      3. GitLab官方文档 https://docs.gitlab.com/ee/install/docker.html