pipeline { agent any options { timestamps() } environment { CRET_ID = '7a52' IMAGE_NAME = "harbor.xxx.xxx/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" NAMESPACES = 'java-{PROJECT_ENV}' } stages { stage('清除工作空间') { steps { cleanWs() } } stage('Node build') { steps { script { sh "npm install --registry=https://registry.npmmirror.com/ --unsafe-perm " sh "npm run build" } } } stage('gitlab pull') { steps { sh "echo{IMAGE_NAME}" echo '正在拉取代码...' checkout([class: 'GitSCM', branches: [[name: Git_Tag]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[ credentialsId: '7a52b90e', url: Git_URL]] ]) } } stage('docker build') { steps { script { if ( PROJECT_ENV == 'prod' ) { IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" } sh "docker rmi{IMAGE_NAME}:`expr {BUILD_ID} - 2` || true" sh "docker build -t{IMAGE_NAME}:{BUILD_ID} ." sh "docker tag{IMAGE_NAME}:{BUILD_ID}{IMAGE_NAME}:latest" } } } stage('docker push') { steps { script { if ( PROJECT_ENV == 'prod' ) { IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" } sh "docker push {IMAGE_NAME}:{BUILD_ID} && docker push {IMAGE_NAME}:latest" } } } stage('kube apply') { steps { script{ if ( PROJECT_ENV == 'test' ) { sh "kubectl set image deploy{JOB_NAME} -n {NAMESPACES}{JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record" sh "kubedog rollout track -n {NAMESPACES} deployment{JOB_NAME}" }else{ IMAGE_NAME = "registry-vpc.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" sh "kubectl --kubeconfig /root/.kube/config.xxx set image deploy {JOB_NAME} -n{NAMESPACES} {JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record" sh "kubedog --kube-config /root/.kube/config.xxx rollout track -n{NAMESPACES} deployment ${JOB_NAME}" } } } } } }
1.2 Dockerfile(使用Nginx)
FROM nginx LABEL maintainer="研发组 <user@xxx.xxx>" COPY ./dist/ /usr/share/nginx/html/ RUN chmod -R 777 /usr/share/nginx/html/ RUN chmod -R 777 /etc/nginx/conf.d/default.conf CMD ["nginx", "-g", "daemon off;"]
1.3 Dockerfile (使用node镜像)
FROM node:8.10.0-alpine ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime && echoTZ > /etc/timezone WORKDIR /app ADD . /app/ RUN npm i docsify-cli -g --registry=https://registry.npmmirror.com RUN docsify init ./ CMD ["docsify","serve","./"]
2.1 pipline
pipeline { agent any options { timestamps() } environment { CRET_ID = '7a52' IMAGE_NAME = "harbor.xxx.xxx/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" NAMESPACES = 'java-{PROJECT_ENV}' } stages { stage('清除工作空间') { steps { cleanWs() } } stage('gitlab pull') { steps { sh "echo{IMAGE_NAME}" echo '正在拉取代码...' checkout([class: 'GitSCM', branches: [[name: Git_Tag]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[ credentialsId: '7a52b90e', url: Git_URL]] ]) } } stage('docker build') { steps { script { if ( PROJECT_ENV == 'prod' ) { IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" } sh "docker rmi{IMAGE_NAME}:`expr {BUILD_ID} - 2` || true" sh "docker build -t{IMAGE_NAME}:{BUILD_ID} ." sh "docker tag{IMAGE_NAME}:{BUILD_ID}{IMAGE_NAME}:latest" } } } stage('docker push') { steps { script { if ( PROJECT_ENV == 'prod' ) { IMAGE_NAME = "registry.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" } sh "docker push {IMAGE_NAME}:{BUILD_ID} && docker push {IMAGE_NAME}:latest" } } } stage('kube apply') { steps { script{ if ( PROJECT_ENV == 'test' ) { sh "kubectl set image deploy{JOB_NAME} -n {NAMESPACES}{JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record" sh "kubedog rollout track -n {NAMESPACES} deployment{JOB_NAME}" }else{ IMAGE_NAME = "registry-vpc.cn.aliyuncs.com/xxx-pip/{JOB_NAME}-{PROJECT_ENV}" sh "kubectl --kubeconfig /root/.kube/config.xxx set image deploy {JOB_NAME} -n{NAMESPACES} {JOB_NAME}={IMAGE_NAME}:{BUILD_ID} --record" sh "kubedog --kube-config /root/.kube/config.xxx rollout track -n{NAMESPACES} deployment ${JOB_NAME}" } } } } } }
2.2 Dockerfile
FROM node:18.20.2 as build COPY . /app WORKDIR /app ARG PUBLIC_PATH=/ ARG MODE RUN npm -v RUN npm install --registry=https://registry.npmmirror.com/ --unsafe-perm && npm run build FROM nginx:alpine ARG PUBLIC_PATH=/ COPY --from=build /app/build/ /usr/share/nginx/html${PUBLIC_PATH} EXPOSE 80
今日报告-66
设置Windows10暂停更新3000天
AQS公平锁的流程
AMD锐龙7 7800X3D网游专项测试:竟比i9-13900KS强了15%
常用总线技术基本参数对比
探索图像数据中的隐藏信息:语义实体识别和关系抽取的奇妙之旅
设置Chrome浏览器自动升级
JavaScript – 小技巧 Tips
Winform无边框窗体实现拖动
STM32基础(一)
技术人的修炼---九五小庞
vue自定义事件用法及$emit
ODOO 科目配置4
sqlite 触发器 c#
postgresql在插入数据后怎么获取自增id
EF Core 的基本使用
error: failed to push some refs to 'https://github.com/*******/********.github.io.git'
欧拉降幂
编程语言能力对比
基于机器视觉的小车轨迹控制软件界面展示
【游记】CCPC 济南 2024 游记
AJAX & AXIOS-2024/11/1
验证码处理在自动化测试中的应用
一些学科笑话
NOIP2024模拟赛20 & 11.1 小记
20241101 数据结构与算法期中机试收获
Java,启动!
什么是IT技术
即将到来!
2024/11/1日 日志 关于JavaScript简介&引入方式 以及基础语法的学习
舍得-时间-工作是人的一生最重要的事情-自己要有私房钱-人的一生最重要的事情是书写自己的人生
2.TiUP 部署 DM 集群
原型模式的C++实现
python bytecode解析
09-XSS键盘监听、cookie窃取&文件上传绕过
ubuntu 24.04 部署 mysql 8.4.3 LTS
国标GB28181公网平台LiteGBS国标GB28181视频平台建筑工地无线视频联网监控系统方案
imes完工下线
android 13 更改手机信号调整
BFS(Breath First Search 广度优先搜索)
Ethernaut Level 11: Elevator Attack and Blockchain Interaction
快速部署开源spug运维平台的Docker安装指南
驱动调试之printk的原理与使用
计算机思维模型及其应用
华为云发布代码大模型PanGu-Coder2,实现高效代码生成
Linux多硬盘数据存储和分区操作
构建高可用架构: 分层冗余与自动故障转移
LoRA:高效调参的大语言模型适应方法
《分布式系统的基本原理及互联网分层架构的本质》
Hadoop写流程解析
Java架构师的系统架构设计方法论中的规范要点
使用observeDOM解决BetterScroll插件在移动端无法滑动的问题
互联网一致性架构设计实践
高并发系统架构与水平扩展
混合应用的崛起:跨平台开发取代原生应用