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

相关推荐
pas1361 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
小二李1 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器
i建模2 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
军军君013 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
chatexcel3 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
kida_yuan3 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
Hi_kenyon4 小时前
理解vue中的ref
前端·javascript·vue.js
何中应5 小时前
vmware的linux虚拟机如何设置以命令行方式启动
linux·运维·服务器
江畔何人初5 小时前
kubernet与docker的关系
linux·运维·云原生
bubuly6 小时前
软件开发全流程注意事项:从需求到运维的全方位指南
大数据·运维·数据库