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

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

相关推荐
Ruimin05192 小时前
Mysql8.0使用PXC
运维
陈老师还在写代码4 小时前
在服务器部署JVM后,如何评估JVM的工作能力,比如吞吐量
运维·服务器·jvm
handsomestWei4 小时前
k8s优雅操作pod容器组
运维·云原生·k8s·pod
Karoku0664 小时前
【k8s应用管理】kubernetes 存储管理
运维·docker·云原生·容器·kubernetes
钟离墨笺4 小时前
【Linux】【网络】IO多路复用 select、poll、epoll
linux·运维·网络
java 凯4 小时前
Ubuntu 上安装 Elasticsearch 7.6.0
ubuntu·elasticsearch·jenkins
凤山老林5 小时前
Docker 部署 MongoDB | 国内阿里镜像
运维·mongodb·docker·容器
上海运维Q先生5 小时前
Rhel Centos环境开关机自动脚本
linux·运维·centos
m0_6759882313 小时前
Leetcode1728:猫和老鼠 II
linux·运维·数据库·算法·leetcode·python3