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

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

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘3 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥3 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发
云贝贝贝3 天前
腾讯云 TDSQL(MySQL 版)性能优化与慢查询排障实战 6 招
运维·腾讯云
Lsetea3 天前
证书没到期却报certificate has expired:OpenSSL定位中间证书与系统时间
运维·https·ssl证书·openssl·证书链