Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

07-19 1808阅读

创建仓库

  • 创建一个Springboot项目,勾选web
  • 将该项目创建git本地仓库,再创建远程仓库推送上去
  • Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
    创建TestController
    @RestController
    @RequestMapping("/test")
    public class TestController {
        @GetMapping("/hello")
        public String sayHelloJenkins(){
            return "Hello Jenkins!";
        }
    }
    • 本地测试无误之后就可以开始执行下面的内容了。Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

      安装Maven

      ​ 因为Jenkins容器没有Maven环境,如在容器内部安装Maven,由于构建的项目要下载相关的依赖这样造成一部分资源浪费。所以我这里采用的将Maven和容器通过挂载达到共享本地Maven仓库

      • 去官网下载Maven,我使用的版本是3.5.0
      • 上传至Docker服务所在的服务器
      • 我这里放到的 /usr/local/目录下了Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
        • 解压后进入apache-maven-3.5.0/
          • 创建repository目录
            mkdir repository
          • 进入conf目录
             vim settings.xml 
            配置本地仓库路径(换成自己的路径和版本)和阿里镜像源
          • 
              
              /usr/local/apache-maven-3.5.0/repository
              
              
              
              
              
              
              
              
            
               aliyunmaven
               *
               阿里云公共仓库
               https://maven.aliyun.com/repository/public
            
              
                
              
            
            
        • 回到/usr/local/给apache-maven-3.5.0文件递归增加其他用户写权限
          • chmod -R o+w apache-maven-3.5.0
            Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
        • 查看apache-maven-3.5.0/bin/目录下的mvn是否有执行权限(绿色的),没有就添加Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
          • 添加Maven环境变量
            • vim /etc/profile
              # 将如下配置到/etc/profile,注意是你的Maven目录的位置
              export MAVEN_HOME=/usr/local/apache-maven-3.5.0
              export PATH=$PATH:$MAVEN_HOME/bin
              配置生效: source /etc/profile
          • 配置成功后关闭终端,重新连接
          • 在任意目录输入
            mvn -version
            没有提示mvn 命令找不到说明配置完成
            • 如果提示找不到java 命令,只是说明你没有安装java环境。根据你自己的需要是否安装,这里可以不安(jenkins容器里有openjdk环境)

            启动Jenkins容器

            • 选择一个目录(我选择的是 /home目录)
            • 在该目录下创建目录
              mkdir jenkins
            • 进入目录,创建data目录 用于挂载Jenkins的数据文件Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
              • 为其他用户添加写的权限chmod o+w dataSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                启动jenkins:

                docker run -d -uroot -p 9095:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins

                Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                基础配置
                • 进入界面 端口是你映射的端口
                • 本地地址:在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。这里可以输入ifconfig指令测试,如果没有的话就可以下载下面这个工具来进行IP获取了。Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                • Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                  (可在控制台用ifconfig查询ip)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                  这里可能不知道密钥在哪里,详情可以看我主页的另一篇笔记,有记录下如何找到Jenkins的密钥:http://t.csdnimg.cn/Zj4xg

                  • 安装推荐插件Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                    • 安装过程要等会,这里的问题仍然存在,有一些插件不能安装下来,还在想办法中。。。。,有懂得大神也可以评论一下怎么解决。Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                    • Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                      • 直接使用admin用户Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                        • 之后保存并完成,然后重启(如果你觉得重启慢的话,去终端另开一个端口,用docker restart 容器id 重启容器)。重启好了页面要刷新一下,不然一直等待页面Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                          • 使用admin用户登录Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                            全局安全配置

                            这里可以根据自己的需求做配置Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                            全局工具配置

                            ​ 通过

                             docker exec -it 

                            容器id /bin/bash 进入容器(以下参数全是容器中的参数)

                            • 获取Maven的settings文件路径Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                            • 获取环境变量JAVA_HOMESpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                              • 获取环境变量MAVEN_HOMESpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                配置JAVA_HOME时把自动安装取消就可以了Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                Maven同上 git直接用容器默认的Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                插件管理Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                                • 安装Publish Over SSH插件 选中然后下载(我这里截图没来得及选)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                                  • 等待下载完成重启一下容器就完成了(重启后记得刷新页面),之后要用的时候再配置

                                    # 查看密码

                                    [root@lj jenkins]# cat data/secrets/initialAdminPassword

                                    a86*********************26

                                    第一个任务Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                    源码管理Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                                    构建Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                                    测试构建Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                    项目在第一次打包构建时有点慢,因为要下载相关Maven依赖,别急,去喝口水走走!!Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                    搞定了,Jenkins已经帮我们从远程仓库自动拉取代码然后打包好了,回到工程去看一下Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                    然后点击工作区,这个目录熟不熟悉??哈哈哈。进去target目录查看打包好的jar包吧

                                    Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                    使用Gitee来触发项目构建

                                    上面我们完成了Jenkins的基本构建。但是,我们在实际业务中不是去手动点击立即构建让Jenkins去构建。这tm的算什么自动构建啊!我们程序员写完代码后本地测试没问题了就会通过git的git push推送到远程代码仓库,我们要做到远程代码仓库接收到了新的推送然后去触发Jenkins的构建功能达到自动构建的效果!!!别急慢慢来会很快的!

                                    Gitee官方提供的帮助文档

                                    安装插件

                                    和刚才安装 Publish Over SSH插件插件一样

                                    • 点击最上角 Dashboard 进到首页。然后 系统管理 -> 插件管理 -> 可选插件 搜索GiteeSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      安装完成了记得重启

                                      插件配置

                                      系统管理 -> 系统配置 -> Gitee 配置

                                      先去Gitee生成API 令牌 https://gitee.com/profile/personal_access_tokensSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      点击高级根据你的需求选择 再点击测试连接Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      插件配置完成!!

                                      任务配置

                                      进入我们jenkins_test任务,左边导航栏有个配置点击进入

                                      Gitee链接

                                      选择我们刚才配置的链接Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      源码管理配置

                                      在源码管理点击高级Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      触发器配置Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      保存!!!!!!!

                                      Gitee代码仓库配置WebHook

                                      管理 -> WebHooks -> 添加webHookSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      测试

                                      去我们之前的示例项目里随便做点修改然后git push到远程仓库试试Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                      测试成功!!!

                                      使用GitLab触发项目构建

                                      安装插件

                                      安装 Gitlab 和 Gitlab Hook 过程同上。基本配置都相同,GitLab官方的配置是英文的。emmm面向有道翻译学习了。

                                      任务配置

                                      进入我们jenkins_test任务,左边导航栏有个配置点击进入

                                      源码管理

                                      要换成你GitLab的地址和密码哦(用公钥私钥免密登录也行,记得要将容器内jenkins私钥配置给凭证,还有jenkins的公钥配置给GitLab)

                                      触发器配置

                                      和Gitee类似。选择你的触发事件( Push Events )。点击高级还会生成 Secret token 。

                                      记得把WebHook和生成的Secret token配置给GitLab的WebHooks

                                      测试

                                      测试一样啊,你把你的项目推送,然后看看有没有触发构建咯。

                                      持续部署

                                      ​ 在前面我们已经完成了有远程代码仓库推送代码触发项目构建的功能。但是,每次构建完了是不是还是要我们去下载然后部署到我们的目标服务器。这样未必过于麻烦,而且有些时候还会出现不及时等情况,或者部署后又上线新需求又要从新部署!!!我们能不能让Jenkins自动帮我们连接我们要部署的目标服务器帮我们自动化部署呢??? 嘿嘿嘿!懒使人进步。come on!

                                      ​ 还记得我们前面安装了 Publish Over SSH插件吗?我们来思考一下,我们到底想让Jenkins帮我们做什么?emmm! 首先,帮我们把构建打包好的jar包发送到目标服务器上,然后连接我们的目标服务器去执行启动项目的命令(java -jar xxx,jar > /dev/null &)!

                                      准备:

                                      • 在你的搭建的Jenkins服务的宿主机上生成ssh秘钥ssh-keygen(生成过就别生成了或者覆盖)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)
                                        • 将你的公钥发送到你们要部署的目标服务器 ssh-copy-id 目标服务器ip
                                          插件配置

                                          进入 系统管理 -> 系统配置 -> Publish over SSHSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                          SSH Servers 点击新增 你也可以点击高级用目标服务器的账号密码登录它的sshSpringboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                          点击保存

                                          任务配置

                                          进入我们jenkins_test任务,左边导航栏有个配置点击进入

                                          构建后操作Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                          保存

                                          测试

                                          去我们之前的示例项目里随便做点修改然后git push到远程仓库

                                          ......参照上面的测试

                                          查看控制台Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                          查看目标服务器Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                          你可以在任务配置里面刚才脚本的位置添加相关的脚本,比如判断某个该服务是否启动启动就关闭启动新的服务,完成自动化部署 示例:

                                          #!/bin/bash

                                          cd jenkins_test

                                          # 这是一个坑点 ssh远程执行命令的时候,被远程机器的有些环境变量是无法获取的,比如java环境信息,所以java命令执行不出来 !!!

                                          source /etc/profile

                                          # 获取jenkins_test-0.0.1-SNAPSHOT.jar服务的pid 第一次就啥都没有

                                          PID=`ps -aux|grep jenkins_test-0.0.1-SNAPSHOT.jar|grep -v grep |awk '{printf $2}'`
                                          for id in $PID
                                          do
                                          kill -15 $id
                                          echo "killed $id"  
                                          done
                                          nohup java -jar jenkins_test-0.0.1-SNAPSHOT.jar > ./console.log 2>&1 &

                                          用docker-compose完成容器化自动部署

                                          • 在实例项目中添加Dockerfile和docker-compose.yaml文件
                                            FROM java:8
                                            MAINTAINER Lj
                                            COPY target/jenkins_test-0.0.1-SNAPSHOT.jar /usr/local/jenkins_test-0.0.1-SNAPSHOT.jar
                                            ENV MYPATH /usr/local
                                            WORKDIR $MYPATH
                                            EXPOSE 8080
                                            CMD ["java","-jar","jenkins_test-0.0.1-SNAPSHOT.jar"]
                                            version: "3.8"
                                            services:
                                              web:
                                                build: .
                                                ports:
                                                  - "8081:8080"

                                            Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                            修改构建后配置Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

                                            测试

                                            ​ 修改实例代码,然后推送到远程仓库,查看Jenkins控制台的构建,第一次因为要下载相关的镜像所以会比较慢。耐心等待。然后访问8081端口的/test/hello接口Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]