k8s中安装docker-jenkins2.328-java-jdk-maven——详细文档
相关配套软件包网盘下载链接如下:
网盘地址: https://url28.ctfile.com/f/37115828-599518537-3dd11d?p=4907
访问密码:4907
jenkins机器: 192.168.27.132
1.jenkins容器所在宿主机安装docker、java环境和maven环境,以便运行jenkins容器时映射进去
#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum -y install docker-ce
#systemctl enable docker
#systemctl start docker
#mkdir /data
#vi /etc/docker/daemon.json #配置镜像下载加速器
{
“graph”: “/data/docker”,
“insecure-registries”:[“https://b9pmyelo.mirror.aliyuncs.com”]
}
#systemctl restart docker
#docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.0-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.13
安装jdk1.8:
[root@localhost ~]# ls jdk-8u202-linux-x64.tar.gz
jdk-8u202-linux-x64.tar.gz
[root@localhost ~]# tar -zxf jdk-8u202-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_202/ /usr/local/
[root@localhost ~]# ls /usr/local/jdk1.8.0_202/
bin COPYRIGHT include javafx-src.zip jre lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
安装maven3.8
[root@localhost ~]# ls apache-maven-3.8.1-bin.tar.gz
apache-maven-3.8.1-bin.tar.gz
[root@localhost ~]# tar -zxf apache-maven-3.8.1-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.8.1 /usr/local/
[root@localhost ~]# ls /usr/local/apache-maven-3.8.1/
bin boot conf lib LICENSE NOTICE README.txt
配置jdk和maven环境变量:
[root@localhost ~]# vim /etc/profile
…
export JAVA_HOME=/usr/local/jdk1.8.0_202/
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
j
r
e
/
l
i
b
/
r
t
.
j
a
r
:
JAVA_HOME/jre/lib/rt.jar:
JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
e
x
p
o
r
t
M
A
V
E
N
H
O
M
E
=
/
u
s
r
/
l
o
c
a
l
/
a
p
a
c
h
e
−
m
a
v
e
n
−
3.8.1
/
e
x
p
o
r
t
P
A
T
H
=
JAVA_HOME/lib/tools.jar export MAVEN_HOME=/usr/local/apache-maven-3.8.1/ export PATH=
JAVAHOME/lib/tools.jarexportMAVENHOME=/usr/local/apache−maven−3.8.1/exportPATH=PATH:
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:MAVEN_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version “1.8.0_202”
Java™ SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot™ 64-Bit Server VM (build 25.202-b08, mixed mode)
[root@localhost ~]# mvn --version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
2.docker安装Jenkins2.328并映射宿主机环境变量jdk和maven
[root@localhost ~]# ls jenkins-2.328_image_and_jiaoben.tar.gz
jenkins-2.328_image_and_jiaoben.tar.gz
[root@localhost ~]# tar -zxf jenkins-2.328_image_and_jiaoben.tar.gz
[root@localhost ~]# cd jenkins-2.328_image_and_jiaoben
[root@localhost jenkins-2.328_image_and_jiaoben]# ls
jenkins_2.328.tar run_jenkins.sh
[root@localhost jenkins-2.328_image_and_jiaoben]# docker load -i jenkins_2.328.tar
[root@localhost jenkins-2.328_image_and_jiaoben]# docker images |grep 328
jenkins/jenkins 2.328 55860ee0cd73 2 months ago 442MB
[root@localhost jenkins-2.328_image_and_jiaoben]# cat run_jenkins.sh
#!/bin/bash
mkdir /data/jenkins_home -p
docker run -d --name jenkins2.328 -u root -v /data/jenkins_home:/var/jenkins_home -v /etc/profile:/etc/profile -v /usr/local/jdk1.8.0_202:/usr/local/jdk1.8.0_202 -v /usr/local/apache-maven-3.8.1:/usr/local/apache-maven-3.8.1 --net=host jenkins/jenkins:2.328
[root@localhost jenkins-2.328_image_and_jiaoben]# sh run_jenkins.sh
[root@localhost jenkins-2.328_image_and_jiaoben]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0188b8cb0e4d jenkins/jenkins:2.328 “/sbin/tini – /usr/…” 18 seconds ago Up 17 seconds jenkins2.328
[root@localhost jenkins-2.328_image_and_jiaoben]# docker logs -f jenkins2.328
…………
Please use the following password to proceed to installation:
b5385281ad0741e39ed08fc08ae0d10a
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
[root@localhost ~]# docker exec -it jenkins2.328 bash
root@localhost:/# tail -4 /etc/profile
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
j
r
e
/
l
i
b
/
r
t
.
j
a
r
:
JAVA_HOME/jre/lib/rt.jar:
JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
e
x
p
o
r
t
M
A
V
E
N
H
O
M
E
=
/
u
s
r
/
l
o
c
a
l
/
a
p
a
c
h
e
−
m
a
v
e
n
−
3.8.1
/
e
x
p
o
r
t
P
A
T
H
=
JAVA_HOME/lib/tools.jar export MAVEN_HOME=/usr/local/apache-maven-3.8.1/ export PATH=
JAVAHOME/lib/tools.jarexportMAVENHOME=/usr/local/apache−maven−3.8.1/exportPATH=PATH:
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:MAVEN_HOME/bin
root@localhost:/# source /etc/profile
root@localhost:/# java -version
openjdk version “11.0.13” 2021-10-19
root@localhost:/# mvn --version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
浏览器访问jenkins: http://192.168.27.132:8080
登录jenkins后,点击用户——configure——找到password,修改密码为指定密码:123456,重新登录即可。
3.jenkins配置国内加速插件源地址
Jenkins国外官方插件下载速度非常慢,所以改为国内插件地址:
登录jenkins——manage jenkins——manage plugins——
先点击avalibale先缓冲一下所有插件,缓冲完毕后,会在服务器的/data/jenkins_home/updates/目录里会形成一个缓冲的default.json文件,这个文件缓冲的都是国外jenkins插件地址,需要替换成国内地址,如下:
[root@localhost ~]# ls /data/jenkins_home/updates/default.json #国外插件地址
/data/jenkins_home/updates/default.json
[root@localhost ~]# cp /data/jenkins_home/updates/default.json /data/jenkins_home/updates/default.json.bak
国外地址: http://updates.jenkins-ci.org/download/
下面是替换为国内清华大学的地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/
[root@localhost ~]# sed -i ‘s#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g’ /data/jenkins_home/updates/default.json
[root@localhost ~]# sed -i ‘s#http://www.google.com#https://www.baidu.com#g’ /data/jenkins_home/updates/default.json
最后,点击advance,将地址再替换一下国内地址:
国内清华大学地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
替换为国内地址后,点击提交即可。然后重启jenkins,可以
在web界面地址中敲一个restart然后回车,如下:
重启后,再重新登录jenkins即可。
4.jenkins安装常用插件
1).jenkins安装中文汉化插件
登录jenkins——manage jenkins——manage plugins——avalible——选择搜索chinese——勾选插件——安装并重启即可。
重启后再登录jenkins,可以看到已经汉化了,如下:
2).jenkins安装用户权限管理插件
不同用户拥有不同权限(包括不同项目用户拥有不同项目权限)
a).安装用户角色插件: Role-base Authorzation Strategy插件来管理jenkins用户权限。
登录jenkins——系统管理——插件管理——可选插件——搜索Role-base找到后安装即可。
如下:
b).安装完角色权限插件后,开启该角色权限插件:
登录jenkins——系统管理——全局安全配置——授权策略处:选择 Role-Based Stragegy——保存。
c).创建不同的角色 (仅登录、仅对项目1有权限、仅对项目2有权限、等等)
登录jenkins——系统管理,下拉找到:manage and assign roles点击进来——点击manage roles——(主要有3类角色:全局角色、项目角色、节点角色(主从时候才会用到)),此处创建3类角色进行演示: 全局角色中创建基础角色:baseRole(仅登录用),项目角色中创建两个:role1(仅能对项目1的jenkins任务有所有权限),role2(仅对项目2的jenkins任务有所有权限)
3).jenkins安装Git插件(方便拉取gitlab地址代码)
登录jenkins——系统管理——管理插件——可用插件——搜索Git插件——安装即可。
注意:web界面安装完Git插件后,还需要在jenkins所在机器或容器里安装git命令,此处容器里已经安装,如果没有安装,需要yum -y install git
[root@localhost ~]# docker exec -it jenkins2.328 bash
root@localhost:/# git --version
git version 2.30.2
root@localhost:/# yum -y install git #如果没有安装,需要安装
4).jenkins安装maven插件和配置maven环境和jdk环境和git环境
a).jenkins的web界面安装maven插件
登录jenkins——系统管理——管理插件——可选插件——搜索Maven——安装即可。
b).jenkins的web界面配置jdk和maven环境
docker容器启动时已经映射了宿主机的jdk和maven环境,查看如下,只需在web界面配置安装路径即可
[root@localhost ~]# docker exec -it jenkins2.328 bash
root@localhost:/# tail -4 /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_202/
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
j
r
e
/
l
i
b
/
r
t
.
j
a
r
:
JAVA_HOME/jre/lib/rt.jar:
JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
e
x
p
o
r
t
M
A
V
E
N
H
O
M
E
=
/
u
s
r
/
l
o
c
a
l
/
a
p
a
c
h
e
−
m
a
v
e
n
−
3.8.1
/
e
x
p
o
r
t
P
A
T
H
=
JAVA_HOME/lib/tools.jar export MAVEN_HOME=/usr/local/apache-maven-3.8.1/ export PATH=
JAVAHOME/lib/tools.jarexportMAVENHOME=/usr/local/apache−maven−3.8.1/exportPATH=PATH:
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:MAVEN_HOME/bin
登录jenkins——系统管理——全局工具配置——找到jdk,起名,配置路径——再找到git,保持默认,再找到maven,起个别名,配置路径,保存即可。
5).jenkins安装凭据插件(保存用户名和密码或密钥)和分别构建maven项目任务和自由风格项目任务
a).安装管理凭据插件:Credentials Binding插件
登录jenkins——系统管理——插件管理——可选插件——搜索:Credentials Binding——安装即可,安装完成后,即可在安全处看到:管理凭据、凭据配置相关。
但是因为jenkins版本不一样,前面安装别的插件时候,已经安装了,可以在已安装里查看到如下插件,如下:
6).jenkins安装Pipeline插件和构建Pipeline项目任务
jenkins的web界面存放pipeline脚本和源代码仓库创建Jenkinsfile存放pipeline脚本
a).安装Pipeline插件
登录jenkins——系统管理——管理插件——可用插件——搜索Pipeline(注意需要和该名相关)——安装即可。
注意:安装Pipeline插件,由于jenkins版本不一样,Pipeline的名字可能不太一样,但是名字需要和Pipeline相关的插件,否则可能会有问题:
插件名称为如下:
或名称为:
如果Pipeline插件版本不是该名字,可能新建的任务有如下问题:
1).下面的流水线Pipeline script处白板显示不出来
2).事例模板helloword的都运行不起来
新建流水线任务test1:
补充:jenkins中安装nodejs,以方便编译发版前端项目(另一个jenkins的ip:192.168.10.82)
Jenkins宿主机安装nodejis,以便映射的jenkins容器里:
[root@dev-jenkins ~]# ls
nodejs-8.9.4.tar.gz
[root@dev-jenkins ~]# tar -zxf nodejs-8.9.4.tar.gz
[root@dev-jenkins ~]# ls
nodejs nodejs-8.9.4.tar.gz
[root@dev-jenkins ~]# mv nodejs /usr/local/
[root@dev-jenkins ~]# ls /usr/local/nodejs/
bin etc include lib share
[root@dev-jenkins ~]# ls /usr/local/nodejs/bin/
cnpm node npm npx webpack webpack-cli webpack-dev-server
[root@dev-jenkins ~]# /usr/local/nodejs/bin/node -v
v8.9.4
[root@dev-jenkins ~]# npm -v
5.6.0
[root@dev-jenkins ~]# docker images |grep jenkins
jenkins/jenkins latest 40a0f9c2bc25 3 weeks ago 460MB
[root@dev-jenkins ~]# vim /data/scripts/run_jenkins.sh
#!/bin/bash
docker run -d --name jenkins -u root --restart=always -v /usr/local/nodejs:/usr/local/nodejs -v /data/jenkins_home:/var/jenkins_home -v /etc/profile:/etc/profile -v /opt/java/openjdk:/opt/java/openjdk -v /usr/local/maven:/usr/local/maven -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/hosts:/etc/hosts --net=host jenkins/jenkins
[root@dev-jenkins ~]# sh /data/scripts/run_jenkins.sh
[root@dev-jenkins ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edcb7dd08a80 jenkins/jenkins “/sbin/tini – /usr/…” 27 seconds ago Up 26 seconds jenkins
[root@dev-jenkins ~]# docker exec -it jenkins bash
root@dev-jenkins:/# cat /etc/profile
#jdk
export JAVA_HOME=/opt/java/openjdk
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
#maven
export MAVEN_HOME=/usr/local/maven
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:KaTeX parse error: Expected 'EOF', got '#' at position 16: MAVEN_HOME/bin #̲node export NOD…PATH:$NODE_HOME/bin
root@dev-jenkins:/# source /etc/profile
root@dev-jenkins:/# ls /usr/local/nodejs/
bin etc include lib share
root@dev-jenkins:/# ls /usr/local/nodejs/bin/
cnpm node npm npx webpack webpack-cli webpack-dev-server
root@dev-jenkins:/# node -v
v8.9.4
root@dev-jenkins:/# npm -v
5.6.0
root@dev-jenkins:/# exit
Jenkins安装nodejs插件,如下:
在全局工具配置中配置nodejs环境:
进入机器npm编译一个项目试试:
[root@dev-jenkins ~]# cd /opt/dev-boatsea-online-h5/ #进去拉取好的前端代码
[root@dev-jenkins dev-boatsea-online-h5]# ls
babel.config.js jest.config.js LICENSE package.json plopfile.js postcss.config.js projects_node_modules.tar.gz public README.md src verify-commit-msg.js vue.config.js
[root@dev-jenkins dev-boatsea-online-h5]# tar -zxf projects_node_modules.tar.gz #事先将安装需要模块保存,在线安装不好装
[root@dev-jenkins dev-boatsea-online-h5]# ls
babel.config.js jest.config.js LICENSE node_modules package.json plopfile.js postcss.config.js projects_node_modules.tar.gz public README.md src verify-commit-msg.js vue.config.js
[root@dev-jenkins dev-boatsea-online-h5]# /usr/local/nodejs/bin/cnpm i #执行相应的编译命令
✔ Installed 55 packages
✔ Linked 0 latest versions
✔ Run 0 scripts
✔ All packages installed (used 64ms(network 60ms), speed 0B/s, json 0(0B), tarball 0B, manifests cache hit 0, etag hit 0 / miss 0)
[root@dev-jenkins dev-boatsea-online-h5]# npm run test #执行相应的编译命令,编译后当前目录会有一个dist目录
[root@dev-jenkins dev-boatsea-online-h5]# ls
babel.config.js dist jest.config.js LICENSE node_modules package.json plopfile.js postcss.config.js projects_node_modules.tar.gz public README.md src verify-commit-msg.js vue.config.js
[root@dev-jenkins dev-boatsea-online-h5]# ls dist/ #dist目录就是编译好的前端代码目录
0.js 10.js.map 12.js.gz 14.js 15.js.map 17.js.gz 19.js 1.js.map 21.js.gz 23.js 24.js.map 26.js.gz 28.js 29.js.map 30.js.gz 32.js 3.js.gz 5.js 6.js.map 8.js.gz app.js static
0.js.gz 11.js 12.js.map 14.js.gz 16.js 17.js.map 19.js.gz 20.js 21.js.map 23.js.gz 25.js 26.js.map 28.js.gz 2.js 30.js.map 32.js.map 3.js.map 5.js.gz 7.js 8.js.map app.js.gz
0.js.map 11.js.gz 13.js 14.js.map 16.js.gz 18.js 19.js.map 20.js.gz 22.js 23.js.map 25.js.gz 27.js 28.js.map 2.js.gz 31.js 33.js 4.js 5.js.map 7.js.gz 9.js app.js.map
10.js 11.js.map 13.js.gz 15.js 16.js.map 18.js.gz 1.js 20.js.map 22.js.gz 24.js 25.js.map 27.js.gz 29.js 2.js.map 31.js.gz 33.js.map 4.js.gz 6.js 7.js.map 9.js.gz favicon.ico
10.js.gz 12.js 13.js.map 15.js.gz 17.js 18.js.map 1.js.gz 21.js 22.js.map 24.js.gz 26.js 27.js.map 29.js.gz 30.js 31.js.map 3.js 4.js.map 6.js.gz 8.js 9.js.map index.html