一、系统版本
cat /etc/anolis-release
Anolis OS release 8.9
二、安装
dnf install -y epel-release
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
三、安装jdk node
下载:Java Archive Downloads - Java SE 21
tar -zxf jdk-21.0.5_linux-x64_bin.tar.gz -C /usr/local/
tar -xf node-v20.13.1-linux-x64.tar.xz -C /usr/local/
vi /etc/profile
export JAVA_HOME=/usr/local/jdk-21.0.5
export NODE_HOME=/usr/local/node-v20.13.1-linux-x64
export PATH={MAVEN_HOME}/bin:JAVA_HOME/bin:{NODE_HOME}/bin:{PATH}
source /etc/profile
java --version
java 21.0.5 2024-10-15 LTS
Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing)
node -v
v20.13.1
[root@jekins-anolis-2-100 local]# npm -v
10.5.2
npm config set registry http://registry.npmmirror.com
npm install -g pnpm
pnpm -v
10.3.0
四、安装jenkins
dnf install jenkins -y
![](https://i-blog.csdnimg.cn/direct/3ebf286df4954e10aa718b3144297904.png)
![](https://i-blog.csdnimg.cn/direct/c92b6e1798da493c94c1c9278b078ece.png)
三、启动
vi /usr/lib/systemd/system/jenkins.service
Environment="JAVA_HOME=/usr/local/jdk-21.0.5"
systemctl daemon-reload
systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins
四、配置
![](https://i-blog.csdnimg.cn/direct/a7b8df859e134a408585f45dfa5f0932.png)
![](https://i-blog.csdnimg.cn/direct/7b2a01dcdc1f4a01aff7b78a9755010e.png)
![](https://i-blog.csdnimg.cn/direct/968922f6e14e49c1b5e76815c0d1aa60.png)
![](https://i-blog.csdnimg.cn/direct/399ea716bdb348dbbdebd7e733cf4294.png)
修改密码:
![](https://i-blog.csdnimg.cn/direct/a624e30bd5da4f3980562282758c934f.png)
点击继续使用admin账户后的密码,如果忘记修改密码退出后,按下面操作:
cat /var/lib/jenkins/secrets/initialAdminPassword
五、安装插件
![](https://i-blog.csdnimg.cn/direct/39adc85c9e324b138817a5aedd1ba84c.png)
![](https://i-blog.csdnimg.cn/direct/434522653ef445e8adc179b1f6d77def.png)
![](https://i-blog.csdnimg.cn/direct/1d36143f9699476cb01a654c88e945a6.png)
语言:
![](https://i-blog.csdnimg.cn/direct/74c2783488bf4eb5bf936cf11f77c31d.png)
![](https://i-blog.csdnimg.cn/direct/18641829102f4b09aa66c49e46495a1b.png)
![](https://i-blog.csdnimg.cn/direct/4e677cd4ab384f6f8cdd5b13ddbc4f2b.png)
![](https://i-blog.csdnimg.cn/direct/e82779424d694fefbbe777fb4ac765a8.png)
![](https://i-blog.csdnimg.cn/direct/c4950c72196d49b5b842354748f9ca04.png)
![](https://i-blog.csdnimg.cn/direct/1fc2ff1ca4654890923679d8721a53e2.png)
六、配置
6.1 nodejs配置
![](https://i-blog.csdnimg.cn/direct/86b4d50bb8704608ab8771af43a829a7.png)
6.2 git配置
![](https://i-blog.csdnimg.cn/direct/26c0d9425cf14cf0989b3ff2bb7cf9e5.png)
七、kubernetes配置
7.1 账户配置
![](https://i-blog.csdnimg.cn/direct/fb0bb1dcf1d74c30ab0fd1131d75c87d.png)
![](https://i-blog.csdnimg.cn/direct/19e057f99b1e4bcfafae013452c11369.png)
![](https://i-blog.csdnimg.cn/direct/305bd9a802d546028249c76343a87f83.png)
![](https://i-blog.csdnimg.cn/direct/191726cab8664010a7478c3f40c2a037.png)
![](https://i-blog.csdnimg.cn/direct/70eb63702bd5421ea53a1277be878a07.png)
![](https://i-blog.csdnimg.cn/direct/56baf2556cd046d9be1a209e657fcf37.png)
7.2 clouds配置
![](https://i-blog.csdnimg.cn/direct/a71254721d674c898869d15d18032e73.png)
![](https://i-blog.csdnimg.cn/direct/2ddf094e1b734c24a0582f48293b3b03.png)
![](https://i-blog.csdnimg.cn/direct/cdf7016412cc4d6fae392bd622511b34.png)
八、jenkins使用docker问题解决
8.1 提示docker:permission denied
cd /var/run/
ls -lh docker.sock
srw-rw---- 1 root docker 0 2月 12 11:39 docker.sock
chmod o+rw docker.sock
ls -lh docker.sock
srw-rw-rw- 1 root docker 0 2月 12 11:39 docker.sock
8.2 denied: requested access to the resource is denied
docker login 192.168.x.x
会在宿主目录生成下面文件:
ls .docker/
config.json
拷贝到/var/lib/jenkins下,并修改权限:
cp -r .docker /var/lib/jenkins/
chown -R jenkins:jenkins /var/lib/jenkins/.docker
ls -lh /var/lib/jenkins/.docker
-rw------- 1 jenkins jenkins 80 2月 12 14:14 config.json
九、jenkins配置k8s的managed files
![](https://i-blog.csdnimg.cn/direct/653343880e8b490e873feecdc3238838.png)
![](https://i-blog.csdnimg.cn/direct/8228533b8fb6447190cb3dd0b5992278.png)
![](https://i-blog.csdnimg.cn/direct/1b7bf06aa38e4be9b6b8d7607058b9a5.png)
十、测试代码
def gitlab_auth="20968eb7-xxxx-xxxx-xxxx-xxxxxxxxxx"
def gitlab_url="http://git.kyc.com/20220712dev/platform-crm.git"
def k8s_auth = "1b56a2fa-7117-xxxx-xxxx-xxxxxxxxxxxx"
pipeline {
agent any
environment {
IMAGE_BUILD="${BUILD_ID}"
JOB_NAME="${env.JOB_NAME}"
}
parameters {
choice (choices: ['master'], description: '指定配置文件',name: 'config')
}
stages {
stage('拉取代码'){
steps {checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${gitlab_auth}", url: "${gitlab_url}"]]])
}
}
stage('daima代码编译'){
steps {
sh """
cd ${JOB_NAME}
echo "代码编译"
source /etc/profile
node --version
npm config set prefix '~/.npm-global'
npm config set registry https://registry.npmmirror.com
npm install -g pnpm
pnpm install
npm run build
cd dist/
tar -czf ../dist.tar ./*
"""
}
}
stage('Dockerfile'){
steps{
sh '''
cd ${JOB_NAME}
cat > Dockerfile <<EOF
FROM registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
ADD dist.tar /usr/share/nginx/html
EOF
'''
}
}
stage('制作上传镜像'){
steps{
sh '''
cd ${JOB_NAME}
docker build -t 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD} .
docker push 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
docker rmi 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
'''
}
}
stage('远程清理'){
steps{
sh '''
cd ${JOB_NAME}
rm -rf dist.tar
'''
}
}
stage('yaml'){
steps{
sh '''
cat > /var/lib/jenkins/workspace/${JOB_NAME}/${JOB_NAME}/${JOB_NAME}.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: crm-web
namespace: crm
spec:
replicas: 2
selector:
matchLabels:
app: crm-web
template:
metadata:
labels:
app: crm-web
spec:
containers:
- name: crm-web
image: 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
ports:
- containerPort: 80
envFrom:
volumeMounts:
- name: crm-web
mountPath: /usr/share/nginx/html/environment.js
subPath: environment.js
- name: tz
mountPath: /etc/localtime
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 40
periodSeconds: 10
readinessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 40
periodSeconds: 10
volumes:
- name: crm-web
configMap:
name: environment
items:
- key: "environment.js"
path: "environment.js"
- name: tz
hostPath:
path: /etc/localtime
dnsPolicy: "None"
dnsConfig:
nameservers:
- 10.96.0.10
searches:
- svc.cluster.local
- cluster.local
---
apiVersion: v1
kind: Service
metadata:
name: crm-web
namespace: crm
spec:
type: NodePort
selector:
app: crm-web
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 31641
EOF
'''
}
}
stage('应用发布'){
steps{
configFileProvider([configFile(fileId: "${k8s_auth}", targetLocation: "admin.kubeconfig")]){
sh"""
cd ${JOB_NAME}
kubectl apply -f ${JOB_NAME}.yaml -n crm --kubeconfig=../admin.kubeconfig
"""
}
}
}
stage("info"){
steps{
sh """
echo "${JOB_NAME}使用的端口号是:192.168.2.34:31641"
"""
}
}
}
}
--kubeconfig=../admin.kubeconfig
这个需要根据实际目录去写:
![](https://i-blog.csdnimg.cn/direct/362ff2dc3ea24accbae872cfd0beac45.png)