目录
简介
本篇主要记录的是内网环境持续集成工具Jenkins整个搭建过程,包括基础镜像(外网docker pull jenkins,我们使用2.222.1版本)的搭建以及自定义镜像的搭建(DockerFile 基于jenkins基础镜像 添加一些需要的配置,如plugins、tools 。
PS:由于网络环境限制,相应操作的截图需要处理后传上。
Jenkins主节点安装
互联网准备好基础镜像包:
docker pull jenkins
docker tag imageId jenkins:base
docker save -o jenkins.tar jenkins:base
将 jenkins.tar 拷入内网,内网需要docker、docker-compose
docker load -i jenkins.tar
docker tag imageId jenkins:base
准备好docker-compose
vim jenkins-compose.yml
version: "3" #定义版本,不指定默认为版本1,新版本功能更多
services:
jenkins:
image: jenkins:base
container_name: jenkins #启动后容器名称
user: root #可以定义为jenkins用户
privileged: true #解决权限问题
restart: always # 同 --restart 参数
ports:
- 9000:9000
- 51000:50000
environment:
TZ: Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mydata/jenkins/jenkins_home:/var/jenkins_home
- /mydata/jenkins/local:/home
- /etc/localtime:/etc/localtime:ro
这样其实已经可以完成Jenkins的docker-compose一键启动。
docker-compose -f jenkins-compose.yml up -d
停:
docker-compose -f jenkins-compose.yml down
插件包:
cp plugins.tar.gz /mydata/jenkins/jenkins_home/plugins
cd /mydata/jenkins/jenkins_home/plugins
tar -xvf /mydata/jenkins/jenkins_home/plugins/plugins.tar.gz
工具包(maven,node,sonar-scanner,jacoco,gradle,android sdk,git,jdk等 ):
cp tools.tar.gz /mydata/jenkins/local
cd /mydata/jenkins/local
tar -xvf tools.tar.gz
工具安装就不详细说了,就是一些解压操作,git还会有编译操作
./configure --prefix="git路径"
make && make install
设置环境变量
vim /etc/profile
添加:
export JAVA_HOME=/opt/xxxxx
export GIT_HOME=/opt/xxxx
…
export PATH=$GIT_HOME/bin:$PATH
重复操作就不多写了
source /etc/profile
验证环境变量
mvn -v
git --version
重启docker-compose
docker-compose -f jenkins-compose.yml restart
从节点配置
主从互信
主节点机器执行
ssh-keygen
一路回车
cd ~/.ssh/
ssh-copy-id -i id_rsa.pub root@从IP
测试是否配置成功
ssh 登录从节点机器~不需要输入密码 则配置成功
私钥id_rsa需要在 JENKINS WEB服务上配置凭据,选择SSH Username with private key
ID 可以选择一个明显的标识表明私钥是用来干什么的
从节点工具配置
同主节点工具安装。
需要在主节点WEB服务添加节点,具体图片后续补充。
对于内网的插件包:
1、搭建互联网Jenkins后 下载插件,手动导出,得到plugins.zip/ plugins.tar.gz
2、 搭建内网Jenkins插件库,利用互联网出口搭建插件库(可以是nexus或者artifactory甚至可以是FTP)
实验利用DockerFile 构建自定义镜像,启动后的JENKINS不需要手动拷贝工具介质~
FROM jenkins:base
MAINTAINER luke@foxmail.com.cn
USER root
WORKDIR /opt
ADD ./tool/jdk-8u192-linux-x64.tar.gz /opt/
ADD ./tool/apache-maven-3.5.4-bin.tar.gz /opt/
# 这里node 有的人会把node 放到/usr/local目录下
ADD ./tool/node-v10.15.1-linux-x64.tar.gz /opt/
ADD ./tool/jacoco-0.8.5.zip /opt/
ADD ./tool/sonar-scanner-cli-4.2.0.1873-linux.zip /opt/
ADD ./tool/gradle-5.4.1-all.zip /opt/
ADD ./tool/git-2.30.1.tar.gz /opt/
ADD ./tool/plugins.tar.gz /opt/
ENV GIT_HOME=/opt/git-2.30.1
ENV JAVA_HOME=/opt/jdk-8u192-linux-x64
ENV MAVEN_HOME=/opt/apache-maven-3.5.4-bin
ENV NODE_HOME=/opt/node-v10.15.1-linux-x64
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_HOME/bin:$GIT_HOME/bin:/opt/sonar-scanner-cli-4.2.0.1873-linux/bin:/opt/gradle-5.4.1-all/bin
# 补充npm 源
RUN npm config set registry=xxxxx
# 如果有用Node-sass 需要补充sass源,linux编译需要node-sass的linux binding.node
RUN npm config set sass_binary_site= xxxx
RUN npm config set cache "/opt/npm/npm_cache"
RUN npm config set global "/opt/npm/npm_global"
#如果需要旧的配置信息 ADD ./tool/config.xml /opt
构建镜像 -t 指定输出镜像名称 -f 指定dockerfile
docker build -t new/jenkins -f dockerfile
这样构建好自动义的Jenkins镜像后,参照之前的安装步骤启动即可。