【docker-jenkins搭建】docker的jenkins容器java版本(四)

将上一篇文章最后新建好的py文件复制到jenkins工作台中:

jenkins容器中执行命令:

cp /var/jenkins_home/auto_test/test_demo.py /var/jenkins_home/workspace/test_demo/

jenkins容器降低java版本

jenkins安装插件ruby-runtime时,用java11无法安装,降java版本问题解决。

1. 安装低版本的jdk,参考LINUX下 JAVA环境安装配置

2. 配置低版本的java环境变量

  • 修改容器中的/etc/profile文件:

vim /etc/profile

  • 编辑一下内容并保存退出:
export JAVA_HOME=/autotest/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  • 使配置生效:

source /etc/profile

容器中的环境变量修改,似乎无法改变jenkins的环境变量。

3. exit #退出容器同时也关闭容器

docker systemctl stop docker  关闭docker

后来又尝试修改docker外部的java版本。

修改docker启动jenkins时的环境变量:

1. 前提,本地已经下载好java低版本的jdk并安装配置好环境变量,具体步骤参考:

LINUX下 JAVA环境安装配置

2. 配置好后宿主机的java环境后,需要关闭docker,修改docker容器中配置的java路径:/var/lib/docker/containers/容器id/config.v2.json

3. 打开找到关于JAVA_HOME,PATH的路径。(可以先备份备用,万一失败了可以修复)

4. 将对应的低版本的java的jdk路径作为JAVA_HOME,并将PATH中关于jdk的路径换成低版本的,保存退出。

5.  重启docker:  systemctl restart  docker

6.  重启jenkins容器:docker restart autotest-jenkins

7. 进入docker容器:docker exec -it autotest-jenkins /bin/bash

8. 再次进入jenkins中的插件管理:ruby-runtime插件就可以使用了。

解决 sh: java: command not found 问题

上面修改了config.v2.json文件后去启动docker容器时遇到了错误,导致每次启动看不出任何问题,但是每次查到的状态都是Exited。后来查了一下怎么去看docker的log,问题才有解决方向。

具体解决办法:

1. 使用命令查log:

docker logs autotest-jenkins

最下面是最新的log,其中报了很多错误:/usr/local/bin/jenkins.sh: line 37: exec: java: not found

查了很多地方,根据这个错误提示应该是jenkins.sh这个文件中的java配置不正确导致的

2. 拿到容器中的/usr/local/bin/jenkins.sh文件拷贝到宿主机:

docker cp autotest-jenkins:/usr/local/bin/jenkins.sh /autotest

3. 将jenkins.sh文件加入如下配置,并保存退出
#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin

4. 将此文件再copy回容器中:

docker cp /autotest/jenkins.sh autotest-jenkins:/usr/local/bin/jenkins.sh

5. 如果还有问题,把容器中的环境变量也修改一下,方法类似于上面步骤:

docker cp autotest-jenkins:/etc/profile /autotest

修改后,将修改的文件拷贝回容器中:

docker cp /autotest/profile autotest-jenkins:/etc/profile

6. 再次重启jenkins容器,大功告成:

docker restart autotest-jenkins

进入容器:docker exec -it autotest-jenkins /bin/bash
又可以继续使用了。

重新安装python的步骤(记录在这里,做备用的不够完善。)

先将python卸载

apt-get --purge remove  python

apt-get autoremove python

  • 重新安装python步骤:

# cd /var/jenkins_home/

# mkdir python3

# cd python3/

# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

# tar -xvf Python-3.6.8.tgz

# ls

Python-3.6.8  Python-3.6.8.tgz

# cd Python-3.6.8

# ./configure --prefix=/var/jenkins_home/python3

执行 ./configure --prefix=/var/jenkins_home/python3时报上面错:configure: error: no acceptable C compiler found in $PATH

apt-get 安装依赖包

这个是因为缺少gcc相关依赖包,使用apt-get代替yum安装相关依赖包

apt-get -y install gcc automake autoconf libtool make

apt-get -y install make*

apt-get -y install zlib*

apt-get -y install openssl libssl-dev

apt-get install sudo

执行步骤:apt-get -y install make*报错

The following packages have unmet dependencies:

 libqt4-dbus : Depends: qdbus (= 4:4.8.7+dfsg-11+deb9u1) but it is not going to be installed

 make : Conflicts: make-guile but 4.3-4.1 is to be installed

 make-guile : Conflicts: make

执行步骤:# apt-get -y install zlib*报错

The following packages have unmet dependencies:

 zlib1g-dbg : Depends: zlib1g (= 1:1.2.8.dfsg-5) but 1:1.2.11.dfsg-2 is to be installed

E: Unable to correct problems, you have held broken packages.

The following packages have unmet dependencies(未能满足依赖关系)解决办法:

aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。

# apt-get install aptitude

# aptitude install libqt4-dbus

# aptitude install zlib1g-dbg

# aptitude install make

重新执行上面的命令还是报错,此处坑比较多

继续:

apt-get -y install openssl libssl-dev

apt-get install sudo

make编译安装

在/var/jenkins_home/python3/Python-3.9.2目录执行make和make install 安装

./configure --prefix=/var/jenkins_home/python3 --with-ssl

make

make install

又报错了:

Traceback (most recent call last):
  File "", line 520, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'

花了好久没解决,果断放弃了。

你可能感兴趣的:(Docker,Jenkins,docker,java,python)