查看基础配置

查看jenkins的home路径:

jenkins容器的配置文件在哪_java

查看磁盘占比:

jenkins容器的配置文件在哪_maven_02

发现占比比较大的是:

jenkins容器的配置文件在哪_jenkins_03

主要子目录:

  • jobs:包含Jenkins管理的构建作业的配置细节、构建产物和数据;
  • logs:Jenkins的日志目录;
  • plugins:包含所有已经安装了的插件,这些插件使得Jenkins得到了很好的扩展;
  • updates:用来存放可用的插件更新;
  • userContent:存放为Jenkins服务器定制化的一些内容;
  • users:存放用户账号信息;
  • war:包含扩展的web应用程序;
  • workspace:存放Jenkins项目的工作空间;

这里占用较多的 workspace 文件夹没有什么用, 没有必要迁移, 主要是用于存放对应的一些build过的一些jar包之类的, 一般没有什么用, 只要再次对job进行构建就会再次创建对应的工作空间下的项目文件夹.

release 也是一些版本跟踪的项目数据, 根据情况考虑是否迁移

如果害怕数据丢失建议JENKINS_HOME路径下的所有都进行迁移

迁移

拷贝文件到指定的机器


# 迁移目标机器创建文件夹
mkdir -p /dataRep3/jenkins_data/jenkins_home
# 对Jenkins中的Workspace和release文件夹忽略迁移
rsync -av --exclude='workspace' --exclude='release' /var/lib/jenkins/* guimu@11.0.0.64:/dataRep3/jenkins_data/jenkins_home/


迁移后的目录结构:

jenkins容器的配置文件在哪_maven_04

最外层的jenkins_data用于放所有Jenkins相关的文件, 后续的jdk11和maven都放在jenkins_data下

容器化Jenkins服务

采用docker容器化启动Jenkins, 这里我是升级了老版本的Jenkins, 由 2.346 升级到2.406; 并且从原本的真机部署改为容器化部署

环境配置

下载jdk11:Java Archive Downloads - Java SE 11

maven的下载地址: Index of /maven/maven-3/3.9.2/binaries


# 下载到指定目录
wget https://downloads.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.9.2-bin.tar.gz
# 下载jdk, 注意这里是下载最好是下载oracle的jdk11,不然可能会出问题, 自行官网下载, 下载后传到指定路径jenkins_data下
# 下载完后进行解压
tar -zxvf tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz


启动容器


# 端口和文件路径按照自己的改就可以
docker run --name jenkins --privileged -p 9580:8080 -p 50000:50000 \
-v /dataRep3/jenkins_data/jenkins_home:/var/jenkins_home:rw \
-v /dataRep3/jenkins_data/apache-maven-3.9.2:/usr/local/maven/apache-maven-3.9.2 \
-v /dataRep3/jenkins_data/jdk1.8.0_361:/usr/local/openjdk \
-e "JAVA_HOME=/usr/local/openjdk" \
-e "MAVEN_HOME=/usr/local/maven/apache-maven-3.9.2" \
-e "CLASSPATH=$JAVA_HOME/lib" \
-e "PATH=/usr/local/maven/apache-maven-3.9.2/bin:/usr/local/openjdk/bin:$PATH" \
-e "TZ=Asia/Shanghai" \
-d jenkins/jenkins:2.406


修改容器中的配置

将下面的/etc/profile文件进行覆盖容器内部的文件, 添加maven的路径


# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
#set Maven environment
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH


修改后拷贝到容器中的/etc/profile

jenkins容器的配置文件在哪_jenkins_05

具体步骤:


# 拷贝源文件
docker cp jenkins:/etc/profile ./jenkins_profile
# 修改内容, 按照上述文件,在末尾添加maven配置
vim jenkins_profile
# 将上面的文件拷贝到容器
docker cp jenkins_profile jenkins:/etc/profile
# 最后重启容器
docker restart jenkins


最后打开对应的地址查看是否正常

常见问题

启动失败

jenkins容器的配置文件在哪_jenkins_06

这就是前面提到的可能是因为你的jdk版本的问题, Jenkins的2.4之后需要使用jdk11的版本, 并且不能使用OpenJDK, 需要使用oracle的jdk, 从官网进行下载后进行替换即可

构建项目失败

原因

项目构建时可能会因为使用的jdk11版本的升级而导致构建失败

这时候需要兼容Jenkins内部对jdk8的使用

具体步骤

下载jdk8

同样在oracle官网去下载:Java Archive Downloads - Java SE 8u211 and later

下载到路径 /dataRep3/jenkins_data/下:

jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_07


# 解压tar包
tar tar -zxvf jdk-8u361-linux-x64.tar.gz
# 移动到容器内部, 实际我们只需要移动到挂载的容器的jenkins_home路径下
mv jdk1.8.0_361 jenkins_home


进入容器查看是否正常:


docker exec -it jenkins /bin/bash


jenkins容器的配置文件在哪_jenkins_08

配置jenkins的全局工具配置

jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_09

配置jdk1.8

jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_10

一般默认使用的jenkins默认的jdk, 这添加后还需要修改构建的项目,选择jdk8

jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_11

最后尝试构建验证是否成功

导入缺少的依赖

可能有一些自定义的依赖包需要重新导入到Jenkins的容器中的maven仓库

jenkins容器的配置文件在哪_jenkins_12

拷贝命令:


# 切到指定的仓库位置:
cd /Users/louye/.m2/repository/org
# 拷贝
docker cp kabeja jenkins:/var/jenkins_home/.m2/repository/org/


jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_13

Windows远程打包节点

提示报错:

jenkins容器的配置文件在哪_docker_14

可能因为远程节点的jdk版本和Jenkins的jdk版本不一致导致的, Jenkins节点会拷贝一个remoting.jar到远程节点并使用java -jar命令进行启动, 所以可能会因为版本不一致导致jar包启动失败

解决方案: 更新远程服务器的jdk版本, 因为Jenkins的jdk版本为11, 所有对应的远程节点调用remoting.jar时使用的jdk也需要时11.

为了避免和远程节点的环境使用的jdk版本冲突可以在节点的高级配置中进行指定agent调用jdk的路径:

jenkins容器的配置文件在哪_maven_15

容器的ssh权限配置

拷贝对应的sshkey到远程的机器上

cat .ssh/id_rsa.pub
# 然后登录远程机器, 添加到对应的.ssh/authorized_keys并保存
vim ~/.ssh/authorized_keys

jenkins容器的配置文件在哪_jenkins容器的配置文件在哪_16