Jenkins上面使用pnpm打包

问题

前端也想用Jenkins的CI/CD工作流。

步骤

Jenkins安装NodeJS插件

NodeJS
安装完成,记得重启Jenkins。

全局配置nodejs

全局nodejs配置

Jenksinfile

pipeline {agent anytools {nodejs "18.15.0"}stages {stage('Check tool version') {steps {sh '''node -vnpm -vnpm config ls'''}}stage('Build Preparation') {steps {sh '''corepack enable pnpmpnpm i'''}}stage('Build') {steps {script {if (env.BRANCH_NAME.startsWith('develop')){sh '''pnpm run build:dev'''} else if (env.BRANCH_NAME.startsWith('uat')){sh '''pnpm run build:uat'''} else {echo 'Skipping pnpm run.'}}}}stage('S3 Sync') {steps {script {if (env.BRANCH_NAME.startsWith('release')){sh '''aws s3 sync ./dist/ s3://prod-web-xxxx/ --exclude "xxxx/*" --exclude "h5/*" --delete'''} else if (env.BRANCH_NAME.startsWith('uat')){sh '''aws s3 sync ./dist/ s3://uat-web-xxxx/ --exclude "xxxx/*" --exclude "h5/*" --delete'''} else {echo 'Skipping S3 Sync.'}}}}stage('CDN invalidation') {steps {script {if (env.BRANCH_NAME.startsWith('release')){sh '''aws cloudfront create-invalidation --distribution-id XXXX --paths '/*''''} else if (env.BRANCH_NAME.startsWith('uat')){sh '''aws cloudfront create-invalidation --distribution-id xxxx --paths '/*''''} else {echo 'Skipping CDN invalidation.'}}}}}
}

这里的18.15.0必须与上一步中Jenkins安装的NodeJS名称一致。这里还涉及到将文件上传到s3桶和刷新CDN的过程。

创建Jenkins多分支项目

创建入口页面
创建多分支流水线
设置git源
这里设置git源复制一点点,最后,保存应用。

S3同步部署文件权限(可选)

我这里用的是AWS云,所以,这里需要对运行的Jenkins需要设置相关权限。

{"Version": "2012-10-17","Statement": [{"Sid": "ListObjectsInBucket","Effect": "Allow","Action": ["s3:ListBucket"],"Resource": ["arn:aws:s3:::dev-xxx"]},{"Sid": "AllObjectActions","Effect": "Allow","Action": "s3:*Object","Resource": ["arn:aws:s3:::dev-xxx/*"]}]
}

CloudFront刷新权限(可选)

{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "cloudfront:CreateInvalidation","Resource": "arn:aws:cloudfront::xxxxxxx:distribution/xxxxxxx"}]
}

总结

到这里Jenkins打包前端的工程就结束了。aws cli挺好用的,要是Jenkins出个官方插件就好了。

参考

  • NodeJS
  • CI/CD Pipeline for a NodeJS Application with Jenkins

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类损失函数与评估指标

目录 1 评估指标 1.1 准确率 1.2 精确率 1.3 召回率 1.4 F1 score 1.5 ROC曲线 1.6 AUC 目录 1 评估指标 1.1 准确率 1.2 精确率 1.3 召回率 1.4 F1 score 1.5 ROC曲线 1.6 AUC 1.7 PRC曲线的优势 2 损失函数 1. 负对数似然损失 2. 交叉熵损失 3. 指数损失 …

基于SSM的游戏攻略管理系统

游戏攻略管理系统的构建与实现 一、系统概述二、系统架构与技术选型三、系统功能模块四、系统特点五、总结与展望 随着网络游戏的普及和发展,游戏攻略成为玩家们提升游戏技能、了解游戏机制的重要途径。为了更好地满足玩家需求,提高游戏攻略的管理效率和…

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。 以下是移植效果: 接口:I2C 使用引脚:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…

供应链金融机器学习建模实战

随着全球贸易的不断发展和供应链的日益复杂化,供应链金融作为一种新型金融工具,正逐渐受到企业和金融机构的关注和重视。供应链金融是指通过金融手段来优化和改进供应链中的资金流动和货物流动,以实现企业间的合作共赢。 供应链金融的核心是将…

大模型微调技术概览解读(chatGLM-6B)

目录 一些比较流行的PEFT方案 Prompt Tuning Prefix Tuning LoRA QLoRA 引用链接 参考文档:通俗解读大模型微调(Fine Tuning) - 知乎 从参数规模的角度,大模型的微调分成两条技术路线: 一条是对全量的参数,进行全量的训练…

VMware设置静态ip:以Centos7为例

1、获取网段,子网掩码和网关 到此获取到的信息: 网段:192.168.204.128 ~ 192.168.204.254 子网掩码:255.255.255.0 网关IP:192.168.204.2 2、修改Centos系统的网络配置 使用命令vim /etc/sysconfig/network-scripts/…

Kotlin从0到1,让你一周快速上手!!

声明 大家好,这里是懒羊羊学长,如果需要pdf版以及其他资料,请加入群聊。群里每天更新面经、求职资料,经验分享等,大家感兴趣可以加一下。 Kotlin 声明1.Kotlin基础2. Kotlin函数3.Kotlin进阶4.Kotlin集合5.Kotlin高…

全球顶级的低代码开发平台,你知道几个?

什么是低代码开发平台? 低码开发平台是一个应用程序,提供图形用户界面编程,从而以非常快的速度开发代码,减少了传统的编程工作。 这些工具有助于快速开发代码,最大限度地减少手工编码的努力。这些平台不仅有助于编码,而且还能快速安装和部署。 低码开发工具的好处 低代码平…

为什么公共云的弹性能力很难被发挥出来?

作者|王小瑞 AutoMQ 联合创始人 & CEO 云计算通过资源池化实现单位资源成本更优,使企业能够将 IDC 建设、基础软件研发和运维等工作外包给云厂商,从而更专注于业务创新。资源池不仅包括服务器,还包括人才。云厂商集聚了优秀…

ubuntu20.04.3挂载共享文件夹

VMware设置win共享文件夹 在linux执行挂载命令 sudo vmhgfs-fuse /mnt/hgfs/ -o nonempty这样就可以用管理员访问/mnt/hgfs/share

Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术

Java全套智慧校园系统源码springbootelmentui Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术 智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…

3D视觉引导麻袋拆垛破包 | 某大型化工厂

客户需求 此项目为大型化工厂,客户现场每日有大量麻袋拆垛破包需求,麻袋软包由于自身易变形、码放垛型不规则、运输后松散等情况,无法依靠机器人示教位置完成拆垛。客户遂引入3D视觉进行自动化改造。 工作流程: 3D视觉对紧密贴合…

《剑指 Offer》专项突破版 - 面试题 107 : 矩阵中的距离(C++ 实现)

题目链接:矩阵中的距离 题目: 输入一个由 0、1 组成的矩阵 M,请输出一个大小相同的矩阵 D,矩阵 D 中的每个格子是矩阵 M 中对应格子离最近的 0 的距离。水平或竖直方向相邻的两个格子的距离为 1。假设矩阵 M 中至少有一个 0。 …

JavaScript事件监听测试代码

效果图 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>信息填写页面</title><link …

在STM32中给固定的地址写入一个值,并通过memory窗口进行查看

首先对STM32中存储数据的地方有一个了解 一个是FLASH,一个是RAM RAM是易失存储器&#xff0c;FLASH是非易失存储器&#xff0c;这是最直观的解释。 主要记住以下几点&#xff1a; RAM&#xff08;随机存储器&#xff09;&#xff1a;既可以从中读取数据&#xff0c;也可以写…

GitHub repository - commits - branches - releases - contributors

GitHub repository - commits - branches - releases - contributors 1. commits2. branches3. releases4. contributorsReferences 1. commits 在这里可以查看当前分支的提交历史。左侧的数字表示提交数。 2. branches 可以查看仓库的分支列表。左侧的数字表示当前拥有的分…

AppBuilder升级!工作流编排正式上线!AssistantsAPI开放邀测!

>>【v0.5.3版本】 上线时间&#xff1a;2024/4/14 关键发版信息&#xff1a; 低代码态&#xff1a;新增工作流&#xff0c;低代码制作组件 自定义组件&#xff1a;支持用户自定义创建组件&#xff0c;并被Agent自动编排调用
 工作流框架&#xff1a;组件支持流式编排…

全视通智慧门诊方案助力满洲里市人民医院实现“医”路畅通

近年来&#xff0c;国家有关部门出台多项政策&#xff0c;意在进一步优化医疗服务&#xff0c;提升患者体验&#xff0c;不断满足人民群众日益增长的美好生活需要。 2019年&#xff0c;《医院智慧服务分级评估标准体系&#xff08;试行&#xff09;&#xff08;2019版&#xf…

DataGrip数据库管理工具安装使用

DataGrip数据库管理工具安装使用 DataGrip介绍 DataGrip是jetbrains旗下的一款数据库管理工具&#xff0c;相信做过java开发的同学都知道&#xff0c;idea就是这家公司发明的。 DataGrip 是JetBrains公司开发的数据库管理客户端工具&#xff08;操作数据库的IDE&#xff0c;…