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属性

相关推荐
独泪了无痕9 小时前
Vue调试神器:Vue DevTools使用指南
vue.js·前端工程化
优秀稳妥的JiaJi13 小时前
基于腾讯地图实现电子围栏绘制与校验
前端·vue.js·前端框架
好雨知时节t14 小时前
Pinia中defineStore的使用方法
vue.js
舒一笑14 小时前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
_Eleven15 小时前
Pinia vs Vuex 深度解析与完整实战指南
前端·javascript·vue.js
技术狂小子15 小时前
# 一个 Binder 通信中的多线程同步问题
javascript·vue.js
阿懂在掘金17 小时前
Vue 表单避坑(二):多个 v-model 同时更新,为什么数据丢了?
前端·vue.js
NineData17 小时前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
an3174218 小时前
解决 VSCode 中 ESLint 格式化不生效问题:新手也能看懂的配置指南
前端·javascript·vue.js
青青家的小灰灰20 小时前
Vue 3 新标准:<script setup> 核心特性、宏命令与避坑指南
前端·vue.js·面试