docker+jenkins+gitee配置持续集成部署

服务器安装docker以及docker常用命令

基于docker安装jenkins

创建本地映射jenkins资源目录

mkdir -p /home/docker/jenkins

这边配置的是外网访问9401端口

docker run \
  -u root \
  -d \
  -p 9401:8080 \
  --restart always \
  --privileged=true \
  -v /home/docker/jenkins:/var/jenkins_home \
  --name jenkins \
  jenkinsci/blueocean

如果没有jenkins镜像会自动下载,我下载的镜像是

image-20220317103238963

执行成功后访问如图

image-20220317103732716

使用root用户进入容器

docker exec -it --user root jenkins /bin/bash

查看复制密码

cat /var/jenkins_home/secrets/initialAdminPassword

image-20220317103916400

安装推荐的插件后等待安装成功

创建用户,下一步。安装结束

image-20220317104216290

配置 jenkins

  • 进入jenkins页面找到,全局配置工具

    image-20220317104530067

  • 配置jdk

    使用root用户进入容器

    docker exec -it --user root jenkins /bin/bash
    

    查看容器内jdk路径,去除网页勾选自动安装。填入到配置中

    echo $JAVA_HOME
    

    image-20220317104746999

  • 配置 maven

    image-20220317104927274

    ​ 安装maven插件

    image-20220317105113816

    image-20220317105215694

  • 配置 gitee

    参照前面安装maven插件步骤,安装 gitee插件、publish over ssh插件

    进入系统配置配置gitee

    image-20220317105808104

    链接名随便填,jenkens内唯一不能重复

image-20220317105939111

访问码云私人令牌获取地址

image-20220317110250352

点击测试链接,成功如下图。如果Error参照下面的异常记录中,额外安装Jersey 2 API这个插件

image-20220317111726715

建立任务

  • 构建一个maven任务

    image-20220317112335682

  • 选择gitee链接,配置源码管理中仓库地址,Credentials中添加输入码云账号密码

    image-20220317112534964

  • 配置gitee webhook

    生成webhook密码去gitee中配置webhook

    image-20220317112901472

    image-20220317122127011

  • 项目打包配置,配置完成之后应用保存。

    image-20220317113139851

持续部署

  • 首次先立即构建一次,通过日志查看找到docker内jenkins生成jar包的目录

    如果构建不成功,缺少包的话参照下面异常记录配置maven中setting文件

    image-20220317120353143

  • 配置脚本

    image-20220317113212572

    #!/bin/bash
    
    # target打包生成jar包的目录
    JAR_PATH=/var/jenkins_home/workspace/sc-yadong-api/yadong-server-api/yadong-server-api-wx/target/
    # 杀掉之前进程
    ps -ef | grep "yadong-server-api-wx" | grep -v grep | awk '{print $2}' | xargs kill -9 
    # 启动
    cd $JAR_PATH
    nohup java -jar -Dspring.profiles.active=prod yadong-server-api-wx-0.0.1-exec.jar  &
    
    

    image-20220317120944942

异常记录

  • Gitee链接失败

    image-20220317110446246

    查了系统日志是找不到类

    Caught unhandled exception with ID 808d1ade-eb27-42d4-a033-924318d6c7bc
    java.lang.ClassNotFoundException: javax.ws.rs.ext.MessageBodyReader
    	at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1402)
    	at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1357)
    	at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1112)
    	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    Caused: java.lang.NoClassDefFoundError: javax/ws/rs/ext/MessageBodyReader
    	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    	at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1172)
    	at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1340)
    	at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1392)
    	at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1357)
    	at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1112)
    	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    	at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1172)
    	at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1340)
    	at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1392)
    	at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1357)
    	at jenkins.ClassLoaderReflectionToolkit.loadClass(ClassLoaderReflectionToolkit.java:148)
    	at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:650)
    	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    	at org.apache.tools.ant.AntClassLoader.findBaseClass(AntClassLoader.java:1421)
    	at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1108)
    	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    	at com.gitee.jenkins.gitee.api.impl.ResteasyGiteeClientBuilder.buildClient(ResteasyGiteeClientBuilder.java:115)
    	at com.gitee.jenkins.gitee.api.impl.ResteasyGiteeClientBuilder.buildClient(ResteasyGiteeClientBuilder.java:81)
    	at com.gitee.jenkins.connection.GiteeConnection.getClient(GiteeConnection.java:116)
    	at com.gitee.jenkins.connection.GiteeConnectionConfig.doTestConnection(GiteeConnectionConfig.java:145)
    	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:398)
    	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:410)
    	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:208)
    	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:141)
    	at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:558)
    	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:59)
    	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
    

    安装这个Jersey 2 API插件,安装完成后重启Jenkins

    image-20220317111121145

  • 修改Jenkins的时间错误
    • 使用root用户进入容器

      docker exec -it --user root jenkins /bin/bash
      
    • 检查时区

      cat /etc/timezone
      
    • 修改时区为 Asia/Shanghai

      echo Asia/Shanghai > /etc/timezone
      
  • 构建失败,配置maven中setting文件

    image-20220317114732488

    安装插件后重启,进入系统管理中进入Managed files,添加配置setting文件

    image-20220317115056958

    项目build中选择前面创建的setting文件

    image-20220317115335987

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值