anolis os 8.9安装jenkins
一、系统版本
# 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/
下载:Index of /dist/v20.13.1/
# 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
三、启动
# 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
四、配置
修改密码:
点击继续使用admin账户后的密码,如果忘记修改密码退出后,按下面操作:
# cat /var/lib/jenkins/secrets/initialAdminPassword
五、安装插件
语言:
六、配置
6.1 nodejs配置
6.2 git配置
七、kubernetes配置
7.1 账户配置
7.2 clouds配置
八、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
十、测试代码
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
这个需要根据实际目录去写: