当前位置: 首页 > news >正文

pipeline + node +jenkins+kubernetes部署yarn前端项目

1、编写Dockerfile文件

# Set the base image
FROM node:16.10.0# WORKDIR /usr/src/app/
WORKDIR /home/option# Copy files
COPY ./ /home/option/# Build arguments
LABEL branch=${BRANCH}
LABEL commit=${COMMIT}
LABEL date=${BUILD_DATE}
ARG ENV# Set ENV variables
ENV COMMIT_BRANCH=${BRANCH}
ENV COMMIT_SHA=${COMMIT}
ENV BUILD_DATE=${DATE}
ENV INSTALLATION_TYPE=docker
ENV MY_ENV=${ENV}# Install dependencies and compile
RUN yarn install --frozen-lockfile
RUN yarn
RUN yarn build:${MY_ENV}# Expose port 15888 - note that docs port is 3000
EXPOSE 3000# Set the default command to run when starting the container
CMD yarn run start

这个Dockerfile需要传环境变量参数
2、编写pipeline文件

// 参数构建
pipeline {agent anyparameters {gitParameter(name: 'BRANCH_TAG', type: 'PT_BRANCH_TAG', branchFilter: 'origin/(.*)', defaultValue: 'main', selectedValue: 'DEFAULT', sortMode: 'DESCENDING_SMART', description: '请选择需要部署的代码:')choice(name: 'mode', choices: ['deploy','rollback'], description: '请选择发布或者回滚?')choice(name: 'ENVMENT', choices: ['sit','exp','gray','prod'], description: '环境参数')        string(name: 'iname', defaultValue: 'option-front', description: '服务名称')}environment {dest_path = "/var/jenkins_home/workspace/${JOB_NAME}"job_path = "/data/docker-compose/jenkins/jenkins_home/workspace/${JOB_NAME}"mod_path = "/data/docker-compose/jenkins/jenkins_home/mod"}stages {stage('clean'){steps {cleanWs(cleanWhenAborted: true, cleanWhenFailure: true, cleanWhenNotBuilt: true, cleanWhenSuccess: true, cleanWhenUnstable: true, cleanupMatrixParent: true, disableDeferredWipeout: true,deleteDirs: true)}    }stage('从 gitlab 中拉取代码') {when {environment name: 'mode',value: 'deploy'}steps {deleteDir()checkout([$class: 'GitSCM', branches: [[name: "${params.BRANCH_TAG}"]],gitTool: 'Default', userRemoteConfigs: [[url: 'https://gitlab.yunson.com/test/option/option_front.git', credentialsId: 'gitlab-deploy',]]])}}stage('Node Install And Build docker image'){steps{script{sh """docker build --build-arg ENV=${ENVMENT} -t harbor.yunson.com/test/${iname}:$ENVMENT ."""                  }}}stage('Push image to hub'){steps{script{withCredentials([usernamePassword(credentialsId: 'harbor-secret-dev',, passwordVariable: 'password', usernameVariable: 'username')]) {sh 'docker login -u ${username} -p ${password}  harbor.yunson.com'}sh 'docker push harbor.yunson.com/test/${iname}:$ENVMENT'}}}stage('deploy Server'){steps{script{sh """curl -X PUT \-H "content-type: application/json" \-H "Cookie: KuboardUsername=admin; KuboardAccessKey=ccpyiaxei7i8.disiejnk4dg5pfjlobgmflkuefkufdwf" \-d '{"kind":"deployments","namespace":"test","name":"${iname}","images":{"harbor.yunson.com/test/${iname}":"harbor.yunson.com/test/${iname}:${ENVMENT}"}}' \"http://69.36.89.2:18085/kuboard-api/cluster/Test/kind/CICDApi/admin/resource/updateImageTag"    curl -X PUT \-H "Content-Type: application/yaml" \-H "Cookie: KuboardUsername=admin; KuboardAccessKey=ccpyiaxei7i8.disiejnk4dg5pfjlobgmflkuefkufdwf" \-d '{"kind":"deployments","namespace":"test","name":"${iname}"}' \"http://69.36.89.2:18085/kuboard-api/cluster/Test/kind/CICDApi/admin/resource/restartWorkload""""}}}}
}

构建jenkins项目
在这里插入图片描述
构建成功如下
在这里插入图片描述
3、编写部署pods的yaml文件

---
apiVersion: apps/v1
kind: Deployment
metadata:annotations:k8s.kuboard.cn/displayName: option-frontlabels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: option-frontname: option-frontnamespace: testresourceVersion: '38871139'
spec:progressDeadlineSeconds: 600replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s.kuboard.cn/name: option-frontstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:annotations:kubectl.kubernetes.io/restartedAt: '2023-11-15T19:51:15+08:00'creationTimestamp: nulllabels:k8s.kuboard.cn/name: option-frontpod-template-hash: 645b77b9cspec:containers:- env:- name: TZvalue: Asia/Shanghaiimage: 'harbor.yunson.com/test/option-front:sit'imagePullPolicy: Alwaysname: option-frontports:- containerPort: 3000name: msag7protocol: TCPresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstimagePullSecrets:- name: acr-secret- name: harbor-secretrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30---
apiVersion: v1
kind: Service
metadata:annotations: {}labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: option-frontname: option-frontnamespace: bikingresourceVersion: '31418671'
spec:internalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- name: ef5znmport: 3000protocol: TCPtargetPort: 3000selector:k8s.kuboard.cn/name: option-frontsessionAffinity: Nonetype: ClusterIP---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations: {}labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: option-frontname: option-frontnamespace: bikingresourceVersion: '38696977'
spec:ingressClassName: biking-ingressrules:- host: option-test.cuiwjrpcvi.comhttp:paths:- backend:service:name: option-frontport:number: 3000path: /pathType: Prefix- backend:service:name: hyperw-optionport:number: 9024path: /service-option-corepathType: Prefix- backend:service:name: hyperw-assetsport:number: 9027path: /hyperw-assetspathType: Prefix- backend:service:name: option-indexport:number: 9029path: /service-option-indexpathType: Prefix- backend:service:name: option-wsport:number: 9090path: /wspathType: Prefix- backend:service:name: hyperw-systemport:number: 9028path: /hyperw-systempathType: Prefix- backend:service:name: legend-indexport:number: 9026path: /public/web/kline/historypathType: Prefix- backend:service:name: legend-indexport:number: 9026path: /public/web/timeline/historypathType: Prefix- backend:service:name: option-wsport:number: 9090path: /service-option-ws/wspathType: Prefix- backend:service:name: hyperw-userport:number: 9023path: /hyperw-userpathType: Prefix- backend:service:name: hyperw-agentport:number: 9033path: /hyperw-agentpathType: Prefix- backend:service:name: hyperw-binary-optionport:number: 9044path: /binary-optionpathType: Prefixtls:- hosts:- test.yunson.comsecretName: yunson.com-ssl

相关文章:

pipeline + node +jenkins+kubernetes部署yarn前端项目

1、编写Dockerfile文件 # Set the base image FROM node:16.10.0# WORKDIR /usr/src/app/ WORKDIR /home/option# Copy files COPY ./ /home/option/# Build arguments LABEL branch${BRANCH} LABEL commit${COMMIT} LABEL date${BUILD_DATE} ARG ENV# Set ENV variables ENV …...

计算机网络中的面向连接与无连接

目录 面向连接和无连接在计算机网络中是如何理解的面向连接和无连接的通信在路由选择上有哪些区别 面向连接和无连接在计算机网络中是如何理解的 在计算机网络中,面向连接和无连接是两种核心的网络通信方式,它们决定了数据包如何传输和接收。 面向连接&…...

EventEmitter3在vue中的使用

前提 vue中的组件传递方式有很多,包括父子组件之间的传值(props,emit)、事件总线($ bus)、状态管理模式(vuex,pinia),现在推荐一种可以替代$bus的一种传值方…...

双剑合璧:基于Elasticsearch的两路召回语义检索系统,实现关键字与语义的高效精准匹配

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…...

LeetCode34-34. 在排序数组中查找元素的第一个和最后一个位置

&#x1f517;:代码随想录:二分查找的算法讲解:有关left<right和left<right的区别 class Solution {public int[] searchRange(int[] nums, int target) {int nnums.length;int l0,hn-1;if(numsnull){return null; }if(n0){return new int[]{-1,-1}; }if(target&l…...

ddrnet 分割学习笔记

目录 修改后可以加载预训练: 训练自己的数据代码: 默认分割后特征下采样8倍,最后用上采样恢复到原图; 修改后可以加载预训练: import math import torch import numpy as np import torch.nn as nn import torch.nn.functional as F from torch.nn import init from …...

Outlook关闭过去事件的提醒

Outlook关闭过去事件的提醒 故障现象 最近Outlook中推出的新功能让我们可以选择自动关闭过去事件的提醒。 目前这个功能暂时只向当月通道的Office 365 订阅者发布。 这些用户升级到1810版本后&#xff0c;可以在不想收到已发生事件提醒的时候通过下面的步骤自动忽略过去事件…...

git 简单入门

git init touch test.txt git add test.txt git commit -m 初始化 仓库 git log //查找日志 git checkout -b dev //创建并切换dev分支 git branch // 查找分支 此时有master 和 dev分支&#xff0c; 此时在dev分支 dev分支也有test.txt文件 vim test.txt //写入dev …...

只有开源才能拯救AI

导语 | 随着 AI 技术的蓬勃发展&#xff0c;大模型的开源化正成为人工智能领域的新潮流&#xff0c;但同时引发的伦理和安全风险也饱受大家关注&#xff0c;如何把握平衡其中的尺度成为开源的一大难题。我们又应该如何有效进行开源治理&#xff1f;未来将走向何方&#xff1f;今…...

在Spring Boot中使用进程内缓存和Cache注解

在Spring Boot中使用内缓存的时候需要预先知道什么是内缓存&#xff0c;使用内缓存的好处。 什么是内缓存 内缓存&#xff08;也称为进程内缓存或本地缓存&#xff09;是指将数据存储在应用程序的内存中&#xff0c;以便在需要时快速访问和检索数据&#xff0c;而无需每次都从…...

YOLOv5项目实战(3)— 如何批量命名数据集中的图片

前言:Hello大家好,我是小哥谈。本节课就教大家如何去批量命名数据集中的图片,希望大家学习之后可以有所收获!~🌈 前期回顾: YOLOv5项目实战(1)— 如何去训练模型 YOLOv5项目实战(2࿰...

React + hooks + Ts 实现将后端响应的文件流(如Pdf)输出到浏览器下载

React 篇 一些关于react 学习与总结 这篇是记录开发中关于实现将后端响应的文件流&#xff08;如Pdf&#xff09;输出到浏览器下载&#xff0c;基于React Hooks Ts。 开发场景&#xff1a; 实现将后端响应的文件流&#xff08;如Pdf&#xff09;输出到浏览器下载&#xff0c;…...

大数据基础设施搭建 - JDK

一、创建目录 需要在root账号下操作&#xff0c;因为/目录下只能用root账号创建目录 1.1 创建目录 [roothadoop102 ~]# mkdir /opt/software/ [roothadoop102 ~]# mkdir /opt/module/1.2 修改权限 修改module、software文件夹的所有者和所属组均为hadoop用户&#xff0c;远程使…...

从0到0.01入门React | 010.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

Docker启动SRS流媒体服务器

一、安装Docker 1.1、下载windows桌面版Windows 1.2、配置镜像 镜像加速器镜像加速器地址Docker 中国官方镜像https://registry.docker-cn.comDaoCloud 镜像站http://f1361db2.m.daocloud.ioAzure 中国镜像https://dockerhub.azk8s.cn科大镜像站https://docker.mirrors.ustc…...

php+MySQL防止sql注入

1、使用预处理语句&#xff08;Prepared Statements&#xff09;&#xff1a;预处理语句能够防止攻击者利用用户输入来篡改SQL语句&#xff0c;同时也能提高执行效率。通过将用户的输入参数与SQL语句分离&#xff0c;确保参数以安全的方式传递给数据库引擎&#xff0c;避免拼接…...

git 删除远程非主分支

git删除远程分支问题及git批量删除已合并的远程分支 - joshua317的博客 git push origin --delete branch-name 本版本Gitlab没有设置按钮&#xff0c;所以不能在网页上删除项目。但是可以在本地使用上述命令来删除远程仓库中非主分支的分支。 测试过不论在哪个分支操作都可…...

【MySQL学习】C++外部调用

#include "mysql.h" MYSQL *mysql; MYSQL_RES *rec; MYSQL_ROW row; &#xff08;1&#xff09;连接 char *server "localhost"; char *user "root"; char *password "hello"; char *database "mysql"; mysql mysql_i…...

Backblaze 2023 Q3硬盘故障质量报告解读

作为一家在2021年在美国纳斯达克上市的云端备份公司&#xff0c;Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告&#xff0c;给大家提供了一份真实应用场景下的稳定性分析参考数据。2023年度之前发布的两次报告&#xff0c;请参考&#xff1a; Backblaze发布2…...

docker安装elasticsearch,elasticsearch-head

安装elasticsearch 1、执行命令&#xff1a;docker pull elasticsearch:8.11.1 2、执行命令&#xff1a;docker run --name elastic -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -d elasticsearch:8.11.1 3、执行命令&#xff1a;docker exec -it …...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...