NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

    • 最佳实践
    • 安装中间件
    • 路由应用(反向代理)
    • DevOps
      • 前期准备
      • 示例
        • 拉取代码
        • 安装依赖
        • 构建项目
        • 构建镜像并推送
        • 部署镜像
        • 参考Jenkinsfile
      • 参考资料
  • K3S

  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • KubeSphere
NipGeihou
2022-10-28
目录

DevOps

本文以部署一个 vuepress 为例

# 前期准备

  • Git 仓库(本文使用 Gitee)
  • Docker 镜像仓库(本文使用腾讯云)

# 示例

# 拉取代码

略

拉取代码经常失败

即便是使用国内的 gitee 拉取代码仍然经常失败。

devops 拉取 github,gitee,gitlab 均会失败 - KubeSphere 开发者社区 (opens new window)

上面的帖子有说 coredns有两个副本,我关调一个后再重启就好了

# 安装依赖

npm install --registry=https://registry.npmmirror.com

# 构建项目

npm run build

此处不能使用vuepress build docs

vuepress 需要全局安装才可以运行此命令,上面的操作并没有全局安装。

# 构建镜像并推送

参考官方示例文档,直接复制对应 Jenkinsfile 代码过,再修改。

# 部署镜像

  • 部署镜像前,需要在 项目-凭证-保密字典 ,创建一个 镜像服务信息 字典。
  • 部署镜像时,需要用到一个 yaml 文件,可以先省略部署镜像这一步,手动在 KubeSphere 部署一遍,然后得到 yaml 文件,再复制到项目中使用。

# 参考 Jenkinsfile

pipeline {
  agent {
    kubernetes {
      inheritFrom 'nodejs base'
      containerTemplate {
        name 'nodejs'
        // 指定node版本,使用默认node版本过低会导致编译失败 
        image 'node:14.19.0'
      }

    }

  }
  stages {
    stage('拉取代码') {
      agent none
      steps {
        git(url: 'https://gitee.com/nipgeihou/项目名.git', credentialsId: 'gitee-nipgeihou', branch: 'master', changelog: true, poll: false)
      }
    }

    stage('安装依赖') {
      agent none
      steps {
        container('nodejs') {
          sh 'npm install --registry=https://registry.npmmirror.com'
        }

      }
    }

    stage('构建项目') {
      agent none
      steps {
        container('nodejs') {
          sh 'npm run build'
        }

      }
    }

 
    stage ('推送镜像') {
        steps {
            container ('base') {
                sh 'docker build -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$BUILD_NUMBER .'
                withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$DOCKER_CREDENTIAL_ID" ,)]) {
                    sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
                    sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$BUILD_NUMBER'
                }
            }
        }
    }

    stage('部署容器') {
            steps {
                container ('base') {
                    withCredentials([
                        kubeconfigFile(
                        credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
                        variable: 'KUBECONFIG')
                        ]) {
                        sh 'envsubst < deploy/deploy.yaml | kubectl apply -f -'
                    }
                }
            }
    }

  }
  
      // docker pull ccr.ccs.tencentyun.com/nipgeihou/blog:[tag]
      environment {
        // 凭证名称,可视化界面显示空是正常的,因为是通过环境变量传递的
        DOCKER_CREDENTIAL_ID = 'txyun-docker-registry'
        // 面板-DevOps 项目-凭证-kubeconfig,会自动填充内容字段,设置名称即可
        KUBECONFIG_CREDENTIAL_ID = 'kubeconfig'
        REGISTRY = 'ccr.ccs.tencentyun.com'
        // 命名空间
        DOCKERHUB_NAMESPACE = 'nipgeihou'
        APP_NAME = 'blog'
        BRANCH_NAME = 'dev'
        PROJECT_NAME = 'kubesphere-sample-dev'
    }
  
}

# 参考资料

  • Docs / 文档 / DevOps 用户指南 / 示例 / 构建和部署 Maven 项目 (opens new window)
上次更新: 2022/10/29, 02:21:46
路由应用(反向代理)
概念

← 路由应用(反向代理) 概念→

最近更新
01
元器件
05-23
02
iSCSI服务搭建
05-10
03
磁盘管理与文件系统
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式