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

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例)

nodejs构建配置

官方教程

注意:下图的dist是vue项目打包目录名称,根据实际名称配置 

# input your command here
cnpm cache clean --force
cnpm install
cnpm run build

主机部署配置

rm -rf /home/vipcardmall/frontend/
mkdir -p /home/vipcardmall/frontend
#解压构建的dist压缩包到指定目录
tar zxvf /home/flowapp/vip_card_mall_user_frontend_v2.tgz -C /home/vipcardmall/frontend
#删除dist压缩包
rm -rf /home/flowapp/vip_card_mall_user_frontend_v2.tgz

下图红框的是webhook触发地址,通过post/json触发,触发后会自动触发流水线,请求参数{},触发成功返回

{"object": true,"successful": true
}

2.springboot项目部署

deploy.sh

#!/bin/bash#---------------------------配置开始----------------------------------
# 修改APP_NAME为云效上的应用名
APP_NAME=openapi-service-0.0.1-SNAPSHOT
PROG_NAME=$0
ACTION=$1
APP_START_TIMEOUT_SECONDS=70    # 等待应用启动的时间(秒)
APP_PORT=6677          # 应用端口
BASE_URL=http://127.0.0.1:${APP_PORT}/openapi-service  # 应用的基础URL
HEALTH_CHECK_URL=${BASE_URL}/common/heartCheck  # 应用健康检查URL
APP_HOME=/home/backend/openapi # 从package.tgz中解压出来的jar包放到这个目录下
JAR_NAME=${APP_HOME}/${APP_NAME}.jar # jar包的名字
JAVA_OUT=${APP_HOME}/prod.log  #应用的启动日志
PACKAGE_PATH=/home/flowapp/mall-openapi.tgz  #制品路径
SHUTDOWN_URL=${BASE_URL}/common/actuator/shutdown #优雅关闭地址
SHUTDOWN_TIMEOUT_SECONDS=70 #优雅停机超时时间(秒)
SPRING_PROFILE="prod" # The Spring profile to activate
#---------------------------配置结束----------------------------------# 创建出相关目录
mkdir -p ${APP_HOME}
usage() {echo "Usage: $PROG_NAME {start|stop|restart}"exit 2
}health_check() {exptime=0echo "checking ${HEALTH_CHECK_URL}"while truedostatus_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code}  ${HEALTH_CHECK_URL}`if [ "$?" != "0" ]; thenecho -n -e "\rapplication not started"elseecho "code is $status_code"if [ "$status_code" == "200" ];thenbreakfifisleep 1((exptime++))echo -e "\rWait app to pass health check: $exptime..."if [ $exptime -gt ${APP_START_TIMEOUT_SECONDS} ]; thenecho 'app start failed'exit 1fidoneecho "check ${HEALTH_CHECK_URL} success"
}
start_application() {echo "starting java process"nohup java -jar -Xmx512m -Xms256m -Dspring.profiles.active=${SPRING_PROFILE} -Dserver.port=${APP_PORT} ${JAR_NAME} >${JAVA_OUT} 2>&1 &echo "started java process"
}stop_application() {# 查找Java进程IDcheckjavapid=$(ps -ef | grep java | grep ${APP_NAME} | grep ${APP_PORT} | grep -v grep | awk '{print $2}')# 如果没有发现Java进程,则直接返回if [[ ! $checkjavapid ]]; thenecho "No java process to stop (process not found)"returnfi# 向Java进程发送SIGTERM请求echo "Sending SIGTERM to Java process with PID ${checkjavapid}."kill -15 ${checkjavapid}# 等待Java进程停止for ((i=0; i<$SHUTDOWN_TIMEOUT_SECONDS; i++)); do# 使用curl检查心跳接口http_status=$(curl -o /dev/null -s -w "%{http_code}\n" ${HEALTH_CHECK_URL})# 如果状态码不是200,认为进程已经停止if [ "$http_status" != "200" ]; thenecho "Java process stopped successfully."returnfisleep 1echo "Waiting for Java process to stop..."done# 如果Java进程在等待时间后仍然存在,则发送SIGKILLecho "Java process did not stop after $SHUTDOWN_TIMEOUT_SECONDS seconds, sending SIGKILL"kill -9 $checkjavapidecho "Java process killed forcefully"
}start() {start_applicationhealth_check
}
stop() {stop_application
}
deploy() {# 停止应用程序stop# 解压PACKAGE_PATH文件到APP_HOME目录echo "Unpacking $PACKAGE_PATH to $APP_HOME"if tar zxvf $PACKAGE_PATH -C $APP_HOME; thenecho "Unpack finished successfully."# 删除原始压缩包echo "Removing the package $PACKAGE_PATH"rm -f $PACKAGE_PATHif [ $? -eq 0 ]; thenecho "Package removed successfully."elseecho "Failed to remove the package."fielseecho "Error occurred during unpacking. Exiting."exit 1fi# 启动应用程序start
}case "$ACTION" instart)start;;stop)stop;;restart)stopstart;;deploy)deploy;;*)usage;;
esac

相关文章:

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…...

个人开发者,Spring Boot 项目如何部署

今天给大家分享一下&#xff0c;作为个人开发者&#xff0c;Spring Boot 项目是如何部署的。 环境介绍 Linux docker docker-compose 目录结构 erwin-windrunner - backups - data - jars - build-docker-compose.sh - docker-compose.yml - Dockerfile文件 Dockerfile …...

【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解

文章目录 一、基于XML的AOP1.1、打印日志案例1.1.1、beans.xml中添加aop的约束1.1.2、定义Bean 1.2、定义记录日志的类【切面】1.3、导入AOP的依赖1.4、主配置文件中配置AOP1.5、测试1.6、切入点表达式1.6.1、访问修饰符可以省略1.6.2、返回值可以使用通配符&#xff0c;表示任…...

学习记录:转发和重定向

转发&#xff08;Forward&#xff09;和重定向&#xff08;Redirect&#xff09;是两种不同的 Web 请求处理方式&#xff0c;它们在功能和行为上有着显著的区别。 区别 转发&#xff08;Forward&#xff09;&#xff1a; 服务器内部跳转&#xff1a;转发是服务器内部的行为&…...

实现(图像、视频等)数据上云存储

实现&#xff08;图像、视频等&#xff09;数据上云存储 实现&#xff08;图像、视频等&#xff09;数据上云存储通常涉及以下几个步骤&#xff1a; 选择云存储服务商&#xff1a; 根据您的需求、预算、地域覆盖、数据安全性、服务稳定性等因素&#xff0c;选择一家合适的云存储…...

LeetCode 454.四数相加II

LeetCode 454.四数相加II 1、题目 题目链接&#xff1a;454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 <…...

GoogleNet网络训练集和测试集搭建

测试集和训练集都是在之前搭建好的基础上进行修改的&#xff0c;重点记录与之前不同的代码。 还是使用的花分类的数据集进行训练和测试的。 一、训练集 1、搭建网络 设置参数&#xff1a;使用辅助分类器&#xff0c;采用权重初始化 net GoogleNet(num_classes5, aux_logi…...

将数字状态码在后台转换为中文状态

这是我们的实体类 可以看出我们的状态status是2如过返回到前端我们根本不知道2代表的是什么&#xff0c;所以我们需要再这里将数字转换成能看懂的中文状态&#xff0c;首先我们创建一个枚举类 先将我们状态码所对应的中文状态枚举出来&#xff0c;然后创建一个静态方法&#…...

2017NOIP普及组真题 4. 跳房子

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1417\ 核心思想 首先、本题中提到 “ 至少 要花多少金币改造机器人&#xff0c;能获得 至少 k分 ”。看到这样的话语&#xff0c;基本可以考虑要使用 二分答案。 那么&#xff0c;本题中…...

网络与 Internet因特网的基本概念

目录 网络Internet &#xff08;互联网或互连网&#xff09;Internet&#xff08;因特网&#xff09;待续、更新中 网络 指将分布在不同地理位置的、相同或不同类型的网络通过网络互连设备&#xff08;中继器、网桥、路由器或网关等&#xff09;相互连接&#xff0c;形成一个范…...

vue-router 中 router-link 与 a 标签的区别

文章目录 前言 a标签定义 router-link定义 总结 前言 vue-router 中 router-link 与 a 标签的区别 a标签定义 <a> 标签定义超链接&#xff0c;用于从一张页面链接到另一张页面。 从一张页面跳转到另一张页面&#xff0c;但从这里来说就违背了多视图的单页Web应用这个…...

MySQL基础知识——MySQL事务

事务背景 什么是事务&#xff1f; 一组由一个或多个数据库操作组成的操作组&#xff0c;能够原子的执行&#xff0c;且事务间相互独立&#xff1b; 简单来说&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 注&#xff1a;MyS…...

【架构方法论(一)】架构的定义与架构要解决的问题

文章目录 一. 架构定义与架构的作用1. 系统与子系统2. 模块与组件3. 框架与架构4. 重新定义架构&#xff1a;4R 架构 二、架构设计的真正目的-别掉入架构设计的误区1. 是为了解决软件复杂度2. 简单的复杂度分析案例 三. 案例思考 本文关键字 架构定义 架构与系统的关系从业务逻…...

基于springboot实现人口老龄化社区服务与管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现人口老龄化社区服务与管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了人口老龄化社区服务与管理平台的开发全过程。通过分析人口老龄化社区服务与管理平台方面的不足&#xff…...

代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结

一、LeetCode 738.单调递增的数字 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 状态&#xff1a;已解决 1.思路 如何求得小于等于N的最大单调递增的整数&#xff1f;98&am…...

C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)

讨厌抄我作业和不让我抄作业的人 讨厌插队和不让我插队的人 讨厌用我东西和不让我用东西的人 讨厌借我钱和不借给我钱的人 讨厌开车加塞和不让我加塞的人 讨厌内卷和打扰我内卷的人 一、C中动态内存管理 1.new和delete操作内置类型 2.new和delete操作自定义类型 二、operat…...

python-re正则笔记0.2.0

1. 匹配linux文件路径 from re import match, search,findall str"sh refreshConfig.sh /opt/client/ccc.txt /opt/client/ccc.dfs 胜多负少的"patter1"\/.\.\w" print(findall(patter1, str))""" [/opt/client/ccc.txt /opt/client/ccc…...

.NET SignalR Redis实时Web应用

环境 Win10 VS2022 .NET8 Docker Redis 前言 什么是 SignalR&#xff1f; ASP.NET Core SignalR 是一个开放源代码库&#xff0c;可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项&#xff1a; 需要从服…...

【热门话题】常见分类算法解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 常见分类算法解析1. 逻辑回归&#xff08;Logistic Regression&#xff09;2. 朴…...

有效利用MRP能为中小企业带来什么?

在离散制造企业&#xff0c;主流的生产模式主要为面向订单生产和面向库存生产&#xff08;又称为预测生产&#xff09;&#xff0c;在中小企业中&#xff0c;一般为面向订单生产&#xff0c;也有部分面向库存和面向订单混合的生产方式&#xff08;以面向订单为主&#xff0c;面…...

Exception Error

Exception 分为两类&#xff1a;运行时异常&#xff08;非受检异常&#xff09;继承自 RuntimeException&#xff0c; 编译器不强制处理&#xff0c;多为代码逻辑错误导致。常见例子&#xff1a; NullPointerException&#xff08;空指针异常&#xff09; ArrayIndexOutOfBound…...

TrollInstallerX:iOS内核漏洞利用与TrollStore安装技术深度解析

TrollInstallerX&#xff1a;iOS内核漏洞利用与TrollStore安装技术深度解析 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款基于内核漏洞利用的iO…...

HoRain云--Lua协程

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…...

如何免费获取Book118文档?这个Java工具让你轻松下载完整PDF

如何免费获取Book118文档&#xff1f;这个Java工具让你轻松下载完整PDF 【免费下载链接】book118-downloader 基于java的book118文档下载器 项目地址: https://gitcode.com/gh_mirrors/bo/book118-downloader 你是否曾经在Book118网站上找到了一份急需的学习资料&#x…...

NPC逆变器模糊超螺旋滑模控制【附仿真】

✨ 长期致力于NPC型逆变器、滑模控制、超螺旋算法、模糊控制、电能质量优化研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;改进型超螺旋滑模变结构控…...

收藏!AI黄金三年,小白也能入局的5大高薪岗位解析

文章分析了AI应用与智能体时代的就业趋势&#xff0c;指出AI正重塑各岗位能力结构并创造新职业。未来三年&#xff0c;企业对AI应用工程师、AIAgent设计师、AI自动化运营、AI产品经理及RAG应用构建等岗位需求激增&#xff0c;这些岗位门槛相对较低但薪资可观。文章强调&#xf…...

2026届学术党必备的五大AI科研神器实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 降 AI 指令&#xff0c;是一种合规优化工具&#xff0c;用于调试 AI 生成逻辑&#xff0c;以…...

编写程序统计行业招聘薪资行情数据,智能比对企业薪资标准,优化薪资体系,减少企业人才流失问题。

一、实际应用场景描述在中型及以上企业的人力资源管理中&#xff0c;经常出现&#xff1a;- 企业需制定或调整岗位薪资标准&#xff08;Salary Band&#xff09;- 市场上同岗位薪资随城市、行业、经验年限波动明显- 企业内部薪资数据分散在 HR 系统 / Excel 中&#xff0c;缺乏…...

LeetCode 1665.完成所有任务的最少初始能量:排序(贪心)

【LetMeFly】1665.完成所有任务的最少初始能量&#xff1a;排序(贪心) 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-initial-energy-to-finish-tasks/ 给你一个任务数组 tasks &#xff0c;其中 tasks[i] [actuali, minimumi] &#xff1a; actuali 是完…...

LangGraph多智能体系统运维:从部署到监控的自动化方案

LangGraph多智能体系统运维:从部署到监控的全链路自动化方案 一、引言 钩子:你是否也踩过LangGraph上线的这些坑? 上周接到某企业AI团队的紧急求助:他们基于LangGraph搭建的客户服务多智能体系统上线仅3小时就全线崩溃,1.2万条用户咨询全部卡住,技术团队排查了2个小时才…...