kubeSphere DevOps部署vue项目

devops部署vue项目

🌔环境说明


🌏创建DevOps工程



🌏填写流水线信息



🌏创建流水线


1 我们编写JenkinsFile

流水线的部署流程如下图
拉取代码 编译代码 打包镜像 推送镜像 部署应用

🌔部署应用所需脚本

Jenkinsfile

groovy 复制代码
pipeline {
  agent {
    node {
      label 'nodejs'
    }

  }
  stages {
    stage('拉取代码') {
      agent none
      steps {
        git(url: '代码地址', credentialsId: 'git-code-auth', branch: 'pro', changelog: true, poll: false)
      }
    }

    stage('构建代码') {
      agent none
      steps {
        container('nodejs') {
          sh '''ls
npm install --force
npm run build:k8sprod'''
        }

      }
    }

    stage('构建镜像') {
      agent none
      steps {
        container('nodejs') {
          sh 'ls'
          sh 'docker build -t tingyuan-cloud-service-web-admin:latest .'
        }

      }
    }

    stage('推送镜像') {
      agent none
      steps {
        container('nodejs') {
          withCredentials([usernamePassword(credentialsId: 'aliyun-docker', passwordVariable: 'DOCKER_PASSWORD_VAR', usernameVariable: 'DOCKER_USER_VAR',)]) {
            sh 'echo "$DOCKER_PASSWORD_VAR" | docker login $REGISTRY -u "$DOCKER_USER_VAR" --password-stdin'
            sh 'docker tag admin:latest 镜像仓库地址:SNAPSHOT-$BUILD_NUMBER'
            sh 'docker push 镜像仓库地址:SNAPSHOT-$BUILD_NUMBER'
          }

        }

      }
    }

    stage('发布应用') {
      agent none
      steps {
        kubernetesDeploy(configs: 'deploy/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")
      }
    }

  }
  environment {
    DOCKER_CREDENTIAL_ID = 'dockerhub-id'
    GITHUB_CREDENTIAL_ID = 'github-id'
    KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
    REGISTRY = '镜像仓库地址'
    GITHUB_ACCOUNT = 'kubesphere'
    DOCKERHUB_NAMESPACE = '镜像仓库命名空间'
  }
  parameters {
    string(name: 'TAG_NAME', defaultValue: '', description: '')
  }
}

Dockerfile

sh 复制代码
FROM nginx
LABEL maintainer=hrd
COPY dist /usr/share/nginx/html/
EXPOSE 80
yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: 我用的是前端项目,可以自行决定叫什么
  name: 我用的是前端项目,可以自行决定叫什么
  namespace: ty   #一定要写名称空间
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: 我用的是前端项目,可以自行决定叫什么
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 50%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: 我用的是前端项目,可以自行决定叫什么
    spec:
      imagePullSecrets:
        - name: aliyun-docker  #提前在项目下配置访问阿里云的账号密码
      containers:
        - image: 镜像仓库地址,我用阿里云镜像仓库
          imagePullPolicy: Always
          name: app
          ports:
            - name: http-80
              containerPort: 80
              protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: 我用的是前端项目,可以自行决定叫什么
  name: 我用的是前端项目,可以自行决定叫什么
  namespace: ty
spec:
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: 我用的是前端项目,可以自行决定叫什么
  sessionAffinity: None
  type: ClusterIP

🌔脚本一些参数如何设置说明

🌏deploy.yaml中的:imagePullSecrets:name属性

yaml 复制代码
imagePullSecrets:
        - name: aliyun-docker  #提前在项目下配置访问阿里云的账号密码 


选择刚才添加的,添加凭证设置变量

🌏jenkinsfile中的kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID"


🌏jenkinsfile中的git-code-auth属性

相关推荐
考虑考虑1 小时前
nginx配置ssl
运维·后端·nginx
着迷不白1 小时前
Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
linux·运维·服务器
山川而川-R2 小时前
LangChain
linux·运维·服务器
QH_ShareHub2 小时前
Linux 根目录结构详解
linux·运维·服务器
sowhat882 小时前
Vue3+vite+Ts+pinia—第八章 生命周期
vue.js
SkyWalking中文站2 小时前
认识 Horizon UI · 17/17:安装与迁移
运维·监控·自动化运维
SkyWalking中文站3 小时前
认识 Horizon UI · 16/17:八种语言的本地化
运维·监控·自动化运维
这是个栗子3 小时前
【Vue代码分析】 import.meta.env.DEV:现代前端工程中的环境变量
前端·javascript·vue.js·环境变量
单位圆的日常3 小时前
FRP反向隧道实现异地SSH家用Linux
linux·运维·ssh·frp
龙萱坤诺4 小时前
Claude Fable 5 重新开放:最强模型回归
大数据·运维·人工智能