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

目录
  • Docker安装Jenkins
  • 1.安装过程
  • 2.Jenkins安装npm
    • 2.1.替换容器的源
    • 2.2.安装nodejs和npm
  • 3.Jenkins流水线+Docker+Maven+Githubwebhooks+Springboot
    • 3.1.需要的插件和配置
      • 3.1.1.插件
      • BlueOcean
      • MavenIntegration
      • 3.1.2.配置
      • 3.1.3.安装maven
      • 3.1.4.配置Jenkins使用Docker
      • 3.1.5.配置Jenkins中的GitSSH
      • 3.1.6.Github添加Webhook
      • 3.1.7.配置主从节点
    • 3.2.使用流水线新建任务
  • 4.GitLab+Jenkins+SpringBoot
    • 4.1.配置GitLab插件和连接
    • 4.2.创建项目
  • 5.Jenkins使用Pipeline集成Cobertura(不支持Java1.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地址即可

Git配置

Docker配置

3.1.3. 安装maven

export MAVEN_HOME=/opt/apache-maven-3.6.3
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin

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

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

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个。

3.2. 使用流水线新建任务

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

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

  • 流水线中(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,整体如下图所示

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

4. GitLab + Jenkins + Spring Boot

4.1. 配置GitLab插件和连接

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

  • 注意上面需要的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格式的覆盖率检查报告
<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>cobertura-maven-plugin</artifactId>

   <configuration>
      <formats>
         <format>xml</format>
      </formats>
      <check/>
   </configuration>
</plugin>
  • 使用: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 安装Jenkins 踩坑全指南的文章就介绍到这了,更多相关Docker 安装Jenkins内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker部署安装jenkins的实现步骤

    首先,我们需要一台安装了docker的服务器.(这个我已经在我的小主机上安装了) 第一步,把镜像给拉下来 docker pull jenkins/jenkins:lts 第二步,创建映射目录 # 在适当的位置创建映射目录 mkdir -p jenkins_home # 查看目录权限 ls -nd jenkins_home # 改变拥有者为管理员 sudo chown -R 1000:1000 jenkins_home 第三步,启动jenkins # 查看docker的镜像 docker imag

  • docker环境下安装jenkins容器的详细教程

    推荐docker学习资料:https://www.runoob.com/docker/docker-tutorial.html 一.Centos7环境 docker安装 先到官网下载镜像,docker镜像官方:https://hub.docker.com/ 1.最新版安装 yum install -y yum-utils device-mapper-persistent-data lvm2 2.加入docker源 yum-config-manager --add-repo https://mir

  • docker-compose安装Jenkins的实践笔记

    创建目录 cd /usr/local/docker/ mkdir jenkins-docker cd jenkins-docker 创建Dockerfile vi Dockerfile # 以下是文件内容 FROM jenkins/jenkins:lts USER root RUN mkdir -p /usr/local/ && \ cd /usr/local/ && \ curl -fsSL https://mirror.bit.edu.cn/apache/maven/m

  • 使用Docker 安装 Jenkins的方法

    一.拉取镜像 我这里安装的版本是2.222.3-centos,可以去这里获取你需要的版本: https://hub.docker.com/_/jenkins?tab=tags ocker pull jenkins/jenkins:2.222.3-centos 二.创建本地数据卷 我这里映射本地数据卷的路径为/data/jenkins_home/,你想放别的地方可以自行修改 -p /data/jenkins_home/ 需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_hom

  • Docker安装Jenkins-2.249.3-1.1的详细过程

    目录 一.安装Docker 二.拉取Jenkins镜像文件 三.创建挂载目录并授权 四.创建并启动Jenkins容器 五.查看jenkins是否启动成功 六.查看docker容器日志 七.访问Jenkins 八.安装Jenkins 一.安装Docker #1.编写Docker安装脚本 [root@ip-10-0-12-212 ~]# vim Ins_Docker.sh #!/usr/bin/bash # Author:jh # Time:2021-10-09 11:54:22 # Name:In

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

    目录 Docker安装Jenkins 1.安装过程 2.Jenkins安装npm 2.1.替换容器的源 2.2.安装nodejs和npm 3.Jenkins流水线+Docker+Maven+Githubwebhooks+Springboot 3.1.需要的插件和配置 3.1.1.插件 BlueOcean MavenIntegration 3.1.2.配置 3.1.3.安装maven 3.1.4.配置Jenkins使用Docker 3.1.5.配置Jenkins中的GitSSH 3.1.6.Git

  • 关于实现Vue3版抖音滑动插件踩坑指南

    目录 起步 调研 实现思路 工程构建 代码实现 video实现 slide.vue 组合使用 视频自动播放问题 git地址 总结 起步 年前单位需要搞一个类似抖音的需求,这本应是客户端的任务,然而,不知天高地厚的我却接了下来,然而下细致调研之下,发现网上并没有成熟的方案,但是却又很多需求,各大论坛全是提问的帖子,却少有人回答和解决. 这一瞬间,俺慌了,毕竟单位的活,排期都是定死的,这时候临阵退缩,实乃下下策.于是只能撸起袖子加油干.毕竟自己揽的事,含着泪也要干完,这就是男人,一个吐沫一个钉! 调

  • Linux下安装Python3.6及避坑指南

    Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好. yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2. 下载Python3源代码 下载Python3的

  • 使用Docker安装Jenkins的示例代码

    在docker安装容器的时候容易遇到的两个问题 1.port is already allocated(端口被指派了) 解决办法:改端口 2.that container to be able to reuse that name 解决办法:查看(删除)之前的容器 docker ps -a | grep jenkins_im docker rm jenkins_im 启动docker服务 sudo systemctl start docker vi /home/jenkins/docker-co

  • Docker 安装 Jenkins 并解决初始安装插件失败问题

    安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那. 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题. 安装插件失败,其实是拉取了官方的 Jenkins 镜像,然后在初始化安装插件时,会从国外的网站去获取,导致安装非常缓慢,或者安装失败.最好的解决方案时拉取 Jenkins 中文社区 提供的 Jenkins 镜像,即可解决.Jenkins 中文官网 :https://www.jenkins.io/zh/ 安装步骤获取

  • 新手必看docker安装jenkins详细教程

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. jenkins基本工作原理 以上为基本工作原理,只是为了开发人员更好的理解画的(个人理解),详情可查看官方文档:https://www.jenkins.io/zh/ 一.jenkins安装 1.查找,下载jenkins镜像文件 启动docker,查找Jenkins镜像文件 docker search jenkins 下载Jenkins镜像文件

  • PyTorch中apex安装方式和避免踩坑

    目录 1.apex 2.安装步骤 3.虽然就简单三行命令,但是仍有很多“坑”存在 背景:这个库的安装不是像其他的一样的直接使用 pip install XXX的形式,而是使用原始的Git方式 1.apex 这是NVIDIA开发的基于PyTorch的混合精度训练加速神器,能够增加运算速度,并且减少显存的占用 2.安装步骤 git clone https://github.com/NVIDIA/apex.git cd apex pip install -v --no-cache-dir --glob

  • Docker安装jenkins实现微服务多模块打包的示例代码

    目录 1.安装 2.初始化 3.配置jenkins 3.1 安装Maven 3.2 配置Maven插件 3.3 安装svn插件 4. 创建自动化部署任务 4.1 配置清理旧的构建 4.2 创建svn账密凭证 4.3 填写build命令 4.4 首次构建 5. 配置maven运行命令及shell脚本 5.1 maven父子项目依赖指令配置 5.2打包完成之后shell命令 废话不多说,直接讲正事 1.安装 # 1.pull jenkins(若使用jdk11则可pull最新版jenkins,否则最新

  • 在云服务器上基于docker安装jenkins的实现步骤

    目录 基于docker安装jenkins 设置jenkins的反向代理 jenkins是老牌的CI/CD工具.下面记录一下在云服务器上的安装过程. 基于docker安装jenkins 下面记录了如何在云服务器上安装jenkins. 新建一个jenkins_docker文件夹,在文件夹里新建一个data文件夹.并给data文件夹读写权限. chmod -R a+w data/ 新建一个docker-compose.yml文件.添加下面的内容: version: "3.1" service

随机推荐