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

这个需要根据实际目录去写:

相关推荐
Championship.23.24几秒前
Linux 3.0 锁机制与故障排查详解
linux·运维·服务器
风123456789~2 小时前
【Linux专栏】ls 排除某个文件
linux·运维·服务器
其实防守也摸鱼3 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
Darkwanderor4 小时前
对Linux的进程控制的研究
linux·运维·c++
爱网络爱Linux7 小时前
Linux proc 目录安全加固
linux·运维·rhce·rhca·红帽认证·proc 目录安全加固
MindUp8 小时前
企业网盘权限模型解析:多层级访问控制与审计能力选型指南
java·linux·运维
持力行8 小时前
D-BUS会话总线
运维·网络
kdxiaojie8 小时前
Linux 驱动研究 —— I2C (5)
linux·运维·笔记·学习
独自归家的兔9 小时前
2026年7月2日 Docker 容器化部署 PaddleOCR-VL 实战(OpenAI 协议兼容 HTTP 调用)
运维·docker·容器
ZXXstarstar9 小时前
2026年电池安全使用年限的量化决策:什么时间到期最需要替换?
linux·运维·服务器·电池