欢迎来到站长天空!

其它服务器

当前位置: 主页 > 服务器 > 其它服务器

Docker 安装Jenkins全过程及踩坑指南

时间:2025-12-20 00:30:04|栏目:其它服务器|点击:

目录
  • Docker 安装 Jenkins
  • 1. 安装过程
  • 2. Jenkins 安装 npm
    • 2.1. 替换容器的源
    • 2.2. 安装nodejs和npm
  • 3. Jenkins流水线 + Docker + Maven + Github webhooks + Spring boot 
    • 3.1. 需要的插件和配置
      • 3.1.1. 插件
      • Blue Ocean
      • Maven Integration
      • 3.1.2. 配置
      • 3.1.3. 安装maven
      • 3.1.4. 配置Jenkins使用Docker
      • 3.1.5. 配置Jenkins中的Git SSH
      • 3.1.6. Github添加Webhook
      • 3.1.7. 配置主从节点
    • 3.2. 使用流水线新建任务
    • 4. GitLab + Jenkins + Spring Boot
      • 4.1. 配置GitLab插件和连接
        • 4.2. 创建项目
        • 5. Jenkins 使用Pipeline集成Cobertura(不支持Java 1.8)
          • 6. Jenkins 使用pipeline集成jacoco
            • 7.参考

              Docker 安装 Jenkins

              开始前最好,将docker升级到最新版本(至少大于17)

              1. 安装过程

              • 首先拉取镜像:docker pull jenkins(我安装的是Jenkins 2.275)
              • 创建本地数据卷:mkdir -p /data/jenkins_home/
              • 修改用户授权:chown -R 1000:1000 /data/jenkins_home/
              • 启动容器:
              • docker run -d --name jenkins -p 7900:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
              • 这里挂载了物理盘映射
              • 还挂载了docker映射
              • 访问对应网址:xxx:7900
              • 获取初始管理员密码(两种方式,因为映射了本地逻辑卷)
              • docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
              • 或者在进入容器后(docker exec -it jenkins /bin/bash):cat /data/jenkins_home/secrets/initialAdminPassword
              • 选择安装推荐的插件等待即可
              • 按照流程创建管理员账户
              • 根据之前的情况创建实例,即完成

              2. Jenkins 安装 npm

              • 首先以root权限进入容器:docker exec -it -u root jenkins bash

              2.1. 替换容器的源

              • 备份:cp /etc/apt/sources.list /etc/apt/sources.list.bak
              • 查看系统版号:lsb_release -c,并且将下文中替换文件中的对应位置进行修改
              • 修改:vim /etc/apt/sources.list,如果无法拉取:sudo apt install apt-transport-https ca-certificates,vim中使用shift+insert插入
              • W: Unable to read /etc/apt/preferences.d/ - DirectoryExists (2: No such file or directory):这时新建此文件夹即可mkdir /etc/apt/preferences.d
              • 如果没有vim,先apt update,然后apt install vim
              # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
              deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
              # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
              deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
              # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
              deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
              # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
              deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
              # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
              • 添加node源:curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

              2.2. 安装nodejs和npm

              • 然后安装node.js:apt-get install nodejs,一定要先更新源
              • 然后安装npm:apt-get install npm
              • 之后替换npm源:npm config set registry http://registry.npm.taobao.org/

              3. Jenkins流水线 + Docker + Maven + Github webhooks + Spring boot 

              3.1. 需要的插件和配置

              3.1.1. 插件

              Blue Ocean

              Maven Integration

              3.1.2. 配置

              • 查看容器的全部信息:docker inspect jenkins,其中的Env项中包含了JAVA_HOME等环境信息,如下所示
              "Env": [
                    "PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                    "LANG=C.UTF-8",
                    "JAVA_HOME=/usr/local/openjdk-8",
                    "JAVA_VERSION=8u242",
                    "JAVA_BASE_URL=https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u242-b08/OpenJDK8U-jdk_",
                    "JAVA_URL_VERSION=8u242b08",
                    "JENKINS_HOME=/var/jenkins_home",
                    "JENKINS_SLAVE_AGENT_PORT=50000",
                    "REF=/usr/share/jenkins/ref",
                    "JENKINS_VERSION=2.275",
                    "JENKINS_UC=https://updates.jenkins.io",
                    "JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental",
                    "JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals",
                    "COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log"
              ]
              • 进行全局工具配置:Jenkins -> 系统管理 -> 全局工具管理
              • jdk配置,如果没有自动安装,如果有则使用上面的JAVA_HOME地址即可

              Docker 安装Jenkins全过程及踩坑指南

              Git配置

              Docker 安装Jenkins全过程及踩坑指南

              Docker配置

              Docker 安装Jenkins全过程及踩坑指南

              3.1.3. 安装maven

              • 同样的进入容器:docker exec -it -u root jenkins bash
              • 下载maven压缩包:wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
              • 解压缩maven安装包:tar -zvxf apache-maven-3.6.3-bin.tar.gz
              • 配置环境变量:vi /etc/profile(安装vi:apt-get install vi)
              export MAVEN_HOME=/opt/apache-maven-3.6.3
              export MAVEN_HOME
              export PATH=$PATH:$MAVEN_HOME/bin
              

              编辑maven的settings.xml来替换源(位置conf/下),在标签内添加一下任意一个

              
                 alimaven
                 aliyun maven
                 http://maven.aliyun.com/nexus/content/groups/public/
                 central
              
              • 刷新权限:source /etc/profile
              • 然后在Jenkins -> 系统管理 -> 全局工具管理继续进行Maven配置

              Docker 安装Jenkins全过程及踩坑指南

              3.1.4. 配置Jenkins使用Docker

              • 之前在创建容器的时候已经完成了sock的映射
              • 登录进入jenkins容器:docker exec -it -u root jenkins bash
              • 安装docker client:
              apt-get update && \
              
              apt-get -y install apt-transport-https \
              
                   ca-certificates \
              
                   curl \
              
                   gnupg2 \
              
                   software-properties-common && \
              
              curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
              
              add-apt-repository \
              
                 "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
              
                 $(lsb_release -cs) \
              
                 stable" && \
              
              apt-get update && \
              
              apt-get -y install docker-ce
              • 通过输入docker来检查是否成功
              • 授予jenkins用户docker权限:
              • 以root用户身份进入jenkins容器:docker exec -it -u root jenkins /bin/bash
              • 查看当前用户情况:ls -l /var/run/docker.sock
              • 授权jenkins用户:chown jenkins: /var/run/docker.sock
              • 再次查看用户情况:ls -l /var/run/docker.sock
              • 检查docker ps之类的命令是否可以使用

              3.1.5. 配置Jenkins中的Git SSH

              • 进入jenkins容器:docker exec -it jenkins /bin/bash
              • 生成SSH密钥:ssh-keygen,一路回车使用默认值
              • 查找密钥:cat /var/jenkins_home/.ssh/id_rsa.pub
              • 然后登录Github,在settings->SSH and GPG keys中添加密钥。

              3.1.6. Github添加Webhook

              • 进入想要部署的仓库,settings -> webhook,选择Add Webhook
              • 设置payload_url为jenkins对应地址:xxx(jenkins访问网址)/github-webhook/
              • 选择Just the push event.Active后保存即可

              3.1.7. 配置主从节点

              避免出现如下报错:pending—Waiting for next available executor

              • 进入对应位置:系统管理 -> 节点管理
              • 点击配置主从节点,设置至少为2个。

              Docker 安装Jenkins全过程及踩坑指南

              3.2. 使用流水线新建任务

              • 点击新建任务,新建一个名为Jenkins-Demo的流水线任务

              Docker 安装Jenkins全过程及踩坑指南

              • 构建触发器选择GitHub hook trigger for GITScm polling

              Docker 安装Jenkins全过程及踩坑指南

              • 流水线中(jenkinsfile文件放置在仓库根目录下)
              • 定义选择Pipeline script from SCM
              • SCM选择Git
              • Repository URL输入对应仓库的git@xxx.git地址
              • 如果出现报错如下,则先进入jenkins容器输入命令git ls-remote -h -- git@github.com:xxx.git HEAD:并输入yes确认
              无法连接仓库:Command "git ls-remote -h -- git@github.com:xxx.git HEAD" returned status code 128:
              stdout:
              stderr: Host key verification failed.
              fatal: Could not read from remote repository.
              
              Please make sure you have the correct access rights
              and the repository exists
              • 最后指定分支为main,整体如下图所示

              Docker 安装Jenkins全过程及踩坑指南

              • 之后选择保存即可
              • 之后点击立即构建来查看效果

              4. GitLab + Jenkins + Spring Boot

              4.1. 配置GitLab插件和连接

              • Jenkins需要安装插件GitLab Plugin和GitLab Hook Plugin
              • 进入系统配置,找到GitLab的配置位置,进行配置

              Docker 安装Jenkins全过程及踩坑指南

              • 注意上面需要的API token需要到GitLab的用户设置中,生成Personal Access Tokens
              • 填写完成后点击Test Connection,如果显示Success表示配置成功
              • 完成GitLab的Ssh配置,过程完全类似第二大步中的对应步骤。

              4.2. 创建项目

              • 勾选Build when a change is pushed to GitLab. GitLab webhook URL:
              • 下拉找到点击高级,找到Allowed branches,选择Filter branch by name(一般是master)
              • 在下拉,来到流水线中,选择Pipeline script from SCM,URL填写GitLab获取的URL,进行测试(注意如果出现git ls-remote -h -- ssh://git@xxx.git HEAD,第一次是需要进入容器执行该命令,并输入yes)
              • 进入GitLab的对应项目仓库,找到settings->integration配置刚刚得到的webhook URL(注意看提示),然后点击Test(模拟一次Push events),如果返回为403码,则查看参考八
              • 之后配置好jenkinsfile,然后跟踪构建结果即可。

              5. Jenkins 使用Pipeline集成Cobertura(不支持Java 1.8)

              • jenkins首先安装插件Cobertura Plugin
              • 在pom文件的build->plugins下添加如下的plugin以生成xml格式的覆盖率检查报告
              
                 org.codehaus.mojo
                 cobertura-maven-plugin
              
                 
                    
                       xml
                    
                    
                 
              
              • 使用:mvn cobertura:cobertura生成相应的测试报告,默认路径为**/target/site/cobertura/
              • 在流水线中添加如下post以添加覆盖报告到Jenkins UI。
              post {
                 always {
                    step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/target/site/cobertura/coverage.xml', failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false, enableNewApi: true])
                 }
              }
              

              6. Jenkins 使用pipeline集成jacoco

              • 在jenkins中安装jacoco插件
              • 在html发布后发现了403问题,在script界面运行System.clearProperty("hudson.model.DirectoryBrowserSupport.CSP")
              • 之后重新构建并发布HTML报告即可

              7.参考

              实用插件

              Jenkins 嵌入到 Iframe

              Jenkins用户组管理

              配置Jenkins的分布式构建和部署

              jenkins分布式构建和部署(master-slave)

              1. Jenkins官方教程
              2. Docker 安装 Jenkins (超详细)
              3. Jenkins 插件安装失败解决办法
              4. Jenkins+Docker+github+Spring Boot自动化部署
              5. Jenkins容器中安装Docker
              6. Jenkins持续集成显示pending—Waiting for next available executor
              7. 30分钟搞定 Jenkins CI
              8. gitlab webhook jenkins 403问题解决方案
              9. jenkins安全内容配置策略

              上一篇:使用 docker 部署 APISIX的详细介绍

              栏    目:其它服务器

              下一篇:碎片拼接技术恢复XenServer服务器SQL Server数据库数据

              本文标题:Docker 安装Jenkins全过程及踩坑指南

              本文地址:https://zz.feitang.co/server/32085.html

              广告投放 | 联系我们 | 版权申明

              申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

              如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

              联系QQ:257218569 | 邮箱:257218569@qq.com

              Copyright © 2018-2025 站长天空 版权所有 Powered by EyouCms冀ICP备14023439号