基于CentOS、docker搭建jenkins内网前端可持续集成环境
测试环境:centos 7(64位)、docker-ce、jenkins 2.93
docker离线安装
在centos上安装docker,除了docker的rpm外还需要有以下的依赖包:
安装依赖:
sudo yum install libtool-ltdl-2.4.2-22.el73.x8664.rpm
sudo yum install container-selinux-2.33-1.git86f33cd.el7.noarch.rpm
sudo yum install docker-ce.rpm
如果之前安装过docker而遇到问题,请参考docker-ce安装文档
开启docker服务
sudo systemctl start docker
下载jenkins镜像并导出
我这里选择的是这个jenkins镜像,之前在win10 pro上有用过jenkinsci/blueocean:latest,在执行node命令是会出现找不到node命令,即使我已经设置了PATH
docker pull jenkins/jenkins
输入 docker images
查看当前的镜像列表

输入sudo docker save -o myjenkins.tar jenkins/jenkins:latest
以.tar的格式导出jenkins/jenkins:latest镜像到当前文件夹,并将它拷贝到离线环境
在离线环境下导入
离线环境下,输入sudo docker load --input myjenkins.tar
导入镜像。
这时输入docker images
查看镜像,即可看见导入的镜像
运行导出的jenkins镜像
docker run
// 当此容器stop时,删除此容器
--rm
// 设置调用docker中命令终端时,使用的角色
-u root
// 映射主机的物理端口8080到docker的8080虚拟端口
-p 8080:8080
//如果jenkins-data(文件夹名字,可以取其他的)在/var/lib/docker/volumes下不存在,docker会创建此文件夹,并将此文件夹下的_data文件夹映射到docker中的/var/jenkins_home,此文件夹下存储的是jenkins的数据(包含插件、用户信息、构建记录等)
-v jenkins-data:/var/jenkins_home
// docker的守护进程(没深入研究过)
-v /var/run/docker.sock:/var/run/docker.sock
// 映射主机的/home/hanqing/source到docker容器中的/home
-v /home/hanqing/source:/home
// 要运行的镜像
myjenkins
打命令的时候是一行写完的,不换行
执行后下图的红框中的字符串要拷贝下来,之后jenkins激活需要用到

配置jenkins
打开浏览器访问localhost:8080,看到jenkins服务已经开启了

administrator的password就是之前红框中的那一串
因为是离线(可以先跳过这个步骤,等配置完jenkins的时候再添加),我知道的插件安装方式有两种
- 插件可以通过jenkins-plugins下载后,从系统设置->管理插件->高级->上传插件
- 从已经下载好插件的jenkins插件目录下拷贝出来,复制到离线jenkins的插件目录(此例子的插件目录是/var/lib/docker/volumes/jenkins-data/_data/plugins)
设置用户(电子邮件一栏一定要有@)

开始使用jenkins
点击主页左侧的新建Item
选项,输入任务名,选择构建一个自由风格的软件项目
,点击确定

在页面中源码管理section中选择版本管理器,我用的是git,所以就用git作例子,这里的Repository URL可以是一个本地地址,也可以是一个网址,必须指向一个带.git文件的文件夹或者一个git仓库,如果要使用ssh的话,需要在Credentials中设置ssh私钥
在构建section选择execute shell,然后就可以在command输入框中输入命令了(这些命令是在docker的容器中执行的,所以执行环境也是容器的)
给构建环境增加node
默认情况下,此docker容器的执行环境中没有node,就跑不了npm script,如果是联网的话,可以通过NodeJS Plugin插件来解决,但离线的话就需要在command里面需要将node的可执行文件添加进PATH中
我的解决方案是将node的linux二进制文件压缩包解压到/home/hanqing/source目录下,为了方便将解压后的文件夹命名为node,也就是把这些文件映射到了容器的/home目录下,这时将bin文件夹下的二进制文件添加到PATH中就可以使用node命令了,在command输入框中输入:PATH=$PATH:/home/node/bin
转载自:https://juejin.cn/post/6844903533599260680