From e73d6abf6296bb3bb8b9913875f2044e353de55c Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Wed, 13 Aug 2025 10:21:58 +0800 Subject: [PATCH 01/43] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=B7=A5?= =?UTF-8?q?=E5=8D=95bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/MInspectionPointController.java | 47 +++++++ .../property/domain/ServiceWorkOrders.java | 2 - .../property/domain/bo/CostItemsBo.java | 4 +- .../domain/enums/MeetAttachStatusEnum.java | 4 +- .../property/domain/enums/MeetStatusEnum.java | 2 +- .../domain/enums/WorkOrderStatusEnum.java | 33 +++++ .../impl/CostCarChargeServiceImpl.java | 2 + .../service/impl/CostItemsServiceImpl.java | 1 + .../impl/MachineMaintainPlanServiceImpl.java | 19 +-- .../property/tasks/InspectionTasks.java | 2 + .../dromara/property/tasks/MachineTasks.java | 3 + .../property/tasks/ServiceWorkOrderTasks.java | 126 +++++++++++++++++- 12 files changed, 224 insertions(+), 21 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MInspectionPointController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/WorkOrderStatusEnum.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MInspectionPointController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MInspectionPointController.java new file mode 100644 index 00000000..def57270 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MInspectionPointController.java @@ -0,0 +1,47 @@ +package org.dromara.property.controller.mobile; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.property.domain.bo.InspectionPointBo; +import org.dromara.property.domain.vo.InspectionPointVo; +import org.dromara.property.service.IInspectionPointService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 巡检点 + * 前端访问路由地址为:/property/point + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/mobile/point") +public class MInspectionPointController extends BaseController { + + private final IInspectionPointService inspectionPointService; + /** + * 扫码签到 + */ + @PostMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionPointBo bo) { + return toAjax(inspectionPointService.updateByBo(bo)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java index de379feb..99a7d889 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java @@ -1,6 +1,4 @@ package org.dromara.property.domain; - -import cn.idev.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostItemsBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostItemsBo.java index 38980488..4cde0894 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostItemsBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostItemsBo.java @@ -97,7 +97,9 @@ public class CostItemsBo extends BaseEntity { /** * 计费单价 */ - @NotBlank(message = "计费单价", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "计费单价不能为空", groups = { AddGroup.class, EditGroup.class }) + @DecimalMin(value = "0.00", inclusive = false, message = "计费单价必须大于0") + @ExcelProperty("计费单价") private BigDecimal unitPrice; /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetAttachStatusEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetAttachStatusEnum.java index 925bd048..1c4c6734 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetAttachStatusEnum.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetAttachStatusEnum.java @@ -7,11 +7,11 @@ package org.dromara.property.domain.enums; **/ public enum MeetAttachStatusEnum { /** - * 待确认 + * 上架 */ ENAABLE("上架", "0"), /** - * 待提货 + * 下架 */ DEACTIVATE("下架", "1"); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetStatusEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetStatusEnum.java index 9fc74f3d..c7ddacf5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetStatusEnum.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/MeetStatusEnum.java @@ -3,7 +3,7 @@ package org.dromara.property.domain.enums; /** * @Author:yuyongle * @Date:2025/7/4 10:35 - * @Description: + * @Description:会议室状态枚举 **/ public enum MeetStatusEnum { /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/WorkOrderStatusEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/WorkOrderStatusEnum.java new file mode 100644 index 00000000..40966af6 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/WorkOrderStatusEnum.java @@ -0,0 +1,33 @@ +package org.dromara.property.domain.enums; + +/** + * @Author:yuyongle + * @Date:2025/8/11 10:59 + * @Description:工单状态枚举 + **/ +public enum WorkOrderStatusEnum { + + CREATE_ORDER("创建工单", "0"), + DISPATCHED("已派单", "1"), + ROB_ORDER("已抢单", "2"), + IN_HAND("处理中", "3"), + DONE("已完成", "4"), + ABANDON("已废弃", "5"); + + + private final String name; + private final String value; + + WorkOrderStatusEnum(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java index 5797df16..05dbd42c 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java @@ -99,9 +99,11 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService { lqw.eq(bo.getFloorId() != null, CostCarCharge::getFloorId, bo.getFloorId()); lqw.eq(StringUtils.isNotBlank(bo.getLocation()), CostCarCharge::getLocation, bo.getLocation()); lqw.eq(StringUtils.isNotBlank(bo.getState()), CostCarCharge::getState, bo.getState()); + lqw.eq(StringUtils.isNotBlank(bo.getChargeStatus()), CostCarCharge::getChargeStatus, bo.getChargeStatus()); lqw.eq(bo.getCostItemsId() != null, CostCarCharge::getCostItemsId, bo.getCostItemsId()); lqw.eq(bo.getStarTime() != null, CostCarCharge::getStarTime, bo.getStarTime()); lqw.eq(bo.getEndTime() != null, CostCarCharge::getEndTime, bo.getEndTime()); + lqw.eq(StringUtils.isNotBlank(bo.getState()), CostCarCharge::getState, bo.getState()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), CostCarCharge::getSearchValue, bo.getSearchValue()); return lqw; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostItemsServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostItemsServiceImpl.java index 8cf98820..20a614dc 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostItemsServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostItemsServiceImpl.java @@ -78,6 +78,7 @@ public class CostItemsServiceImpl implements ICostItemsService { lqw.orderByAsc(CostItems::getId); lqw.eq(StringUtils.isNotBlank(bo.getCostType()), CostItems::getCostType, bo.getCostType()); lqw.eq(StringUtils.isNotBlank(bo.getChargeItem()), CostItems::getChargeItem, bo.getChargeItem()); + lqw.eq(StringUtils.isNotBlank(bo.getChargeNo()), CostItems::getChargeNo, bo.getChargeNo()); lqw.eq(StringUtils.isNotBlank(bo.getCostMark()), CostItems::getCostMark, bo.getCostMark()); lqw.eq(StringUtils.isNotBlank(bo.getPaymentType()), CostItems::getPaymentType, bo.getPaymentType()); lqw.eq(bo.getChargeCycle() != null, CostItems::getChargeCycle, bo.getChargeCycle()); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineMaintainPlanServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineMaintainPlanServiceImpl.java index f58714aa..94bb107d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineMaintainPlanServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineMaintainPlanServiceImpl.java @@ -178,15 +178,16 @@ public class MachineMaintainPlanServiceImpl implements IMachineMaintainPlanServi */ private void validEntityBeforebo(Long id, MachineMaintainPlanBo bo) { //TODO 做一些数据校验,如唯一约束 - Assert.isTrue(CollUtil.isNotEmpty(bo.getMachineMaintainPlanStaffBoList()), "巡检人员不存在"); - QueryWrapper staffLambdaQueryWrapper = new QueryWrapper<>(); - staffLambdaQueryWrapper.eq("maintain_plan_id", id); - machineMaintainPlanStaffMapper.delete(staffLambdaQueryWrapper); - List machineMaintainPlanStaffBoList = bo.getMachineMaintainPlanStaffBoList(); - machineMaintainPlanStaffBoList.stream().forEach(s->{ - s.setMaintainPlanId(id); - }); - machineMaintainPlanStaffMapper.insertBatch(BeanUtil.copyToList(machineMaintainPlanStaffBoList, MachineMaintainPlanStaff.class)); + if(CollUtil.isNotEmpty(bo.getMachineMaintainPlanStaffBoList())){ + QueryWrapper staffLambdaQueryWrapper = new QueryWrapper<>(); + staffLambdaQueryWrapper.eq("maintain_plan_id", id); + machineMaintainPlanStaffMapper.delete(staffLambdaQueryWrapper); + List machineMaintainPlanStaffBoList = bo.getMachineMaintainPlanStaffBoList(); + machineMaintainPlanStaffBoList.stream().forEach(s->{ + s.setMaintainPlanId(id); + }); + machineMaintainPlanStaffMapper.insertBatch(BeanUtil.copyToList(machineMaintainPlanStaffBoList, MachineMaintainPlanStaff.class)); + } } /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java index ebd3d47c..a15a866d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.property.domain.InspectionPlanStaff; import org.dromara.property.domain.InspectionTask; import org.dromara.property.domain.bo.InspectionPlanBo; @@ -41,6 +42,7 @@ import static org.dromara.common.mybatis.core.mapper.BaseMapperPlus.log; * @Date:2025/7/11 15:28 * @Description: 巡检任务定时处理器 **/ +@Slf4j @Component @RequiredArgsConstructor //@Validated diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/MachineTasks.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/MachineTasks.java index af701d25..c3f8b73f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/MachineTasks.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/MachineTasks.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.property.domain.MachineMaintainPlanStaff; import org.dromara.property.domain.MachineMaintainTask; import org.dromara.property.domain.bo.MachineMaintainPlanBo; @@ -42,6 +43,7 @@ import static org.dromara.common.mybatis.core.mapper.BaseMapperPlus.log; * @Date:2025/7/17 09:25 * @Description: **/ +@Slf4j @Component @RequiredArgsConstructor //@Validated @@ -64,6 +66,7 @@ public class MachineTasks { List machineMaintainPlanVoList = machineMaintainPlanService.queryList(machineMaintainPlanBo); // 如果没有有效计划,直接返回 if (ObjectUtil.isEmpty(machineMaintainPlanVoList)) { + log.info("暂时没有有效的计划"); return; } machineMaintainPlanVoList.stream().forEach(plan->{ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/ServiceWorkOrderTasks.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/ServiceWorkOrderTasks.java index a0ad8082..20b673ef 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/ServiceWorkOrderTasks.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/ServiceWorkOrderTasks.java @@ -2,17 +2,31 @@ package org.dromara.property.tasks; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.property.domain.AttendanceUserGroup; import org.dromara.property.domain.ServiceWorkOrders; +import org.dromara.property.domain.ServiceWorkOrdersRecord; +import org.dromara.property.domain.enums.WorkOrderStatusEnum; +import org.dromara.property.mapper.AttendanceUserGroupMapper; import org.dromara.property.mapper.ServiceWorkOrdersMapper; +import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.time.LocalDate; +import java.util.Date; import java.util.List; - -import org.dromara.common.log.annotation.Log; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * @Author:yuyongle @@ -20,23 +34,123 @@ import org.dromara.common.log.annotation.Log; * @Description:自动派单 **/ @Slf4j -@Component +//@Component +//@RequiredArgsConstructor + @RequiredArgsConstructor +@RestController +@RequestMapping("/serviceWorkOrderTasks") public class ServiceWorkOrderTasks { private ServiceWorkOrdersMapper workOrdersMapper; + private ServiceWorkOrdersRecordMapper workOrdersRecordMapper; + private AttendanceUserGroupMapper attendanceUserGroupMapper; - //查询状态为创建工单的工单 + /** + * 查询状态为创建工单的工单,查询当天排班人员,为工单自动派单 + */ +// @Transactional(rollbackFor = Exception.class) +// @Scheduled(cron = "0 0 */1 * * ?") + @GetMapping("/serviceWorkOrderTaskId") private void handleServiceWorkOrder() { List serviceWorkOrderList = workOrdersMapper.selectList( new LambdaQueryWrapper() - .eq(ServiceWorkOrders::getStatus, "0")); + .eq(ServiceWorkOrders::getStatus, WorkOrderStatusEnum.CREATE_ORDER.getValue())); if(CollUtil.isNotEmpty(serviceWorkOrderList)){ serviceWorkOrderList.stream().forEach(s->{ - + //查询今天上班的人员 + LocalDate today = LocalDate.now(); + List attendanceUserGroups = attendanceUserGroupMapper.selectList( + new LambdaQueryWrapper() + .eq(AttendanceUserGroup::getStartDate, today) + ); + if(CollUtil.isNotEmpty(attendanceUserGroups)){ + attendanceUserGroups.stream().forEach(s1->{ + ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord(); + serviceWorkOrdersRecord.setOrderId(s.getId()); + serviceWorkOrdersRecord.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); + serviceWorkOrdersRecord.setHandler(s1.getEmployeeId()); + workOrdersRecordMapper.insert(serviceWorkOrdersRecord); + s.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); + s.setHandler(s1.getEmployeeId()); + workOrdersMapper.updateById(s); + log.info("派单工单号为:{}",s.getOrderNo()); + log.info("处理人为:{}",s1.getEmployeeId()); + }); + }else { + log.info("当天无排班人员"); + } }); }else { log.info("派单工单为:{}",serviceWorkOrderList.size()); } + } + /** + * 处理超过30分钟的工单 + */ +// @Transactional(rollbackFor = Exception.class) +// @Scheduled(cron = "0 0 */1 * * ?") + @GetMapping("/thirtyWorkOrderTaskId") + private void thirtyHandleServiceWorkOrder() { + // 1. 查询当前状态为“已派单”的工单 + List serviceWorkOrderList = workOrdersMapper.selectList( + new LambdaQueryWrapper() + .eq(ServiceWorkOrders::getStatus, WorkOrderStatusEnum.DISPATCHED.getValue()) + ); + LocalDate today = LocalDate.now(); + // 2. 查询今天有排班的人员 + List attendanceUserGroups = attendanceUserGroupMapper.selectList( + new LambdaQueryWrapper() + .eq(AttendanceUserGroup::getStartDate, today) + ); + if (CollUtil.isEmpty(serviceWorkOrderList) || CollUtil.isEmpty(attendanceUserGroups)) { + log.info("当前无可处理的超时工单或今日无排班人员"); + return; + } + Date now = new Date(); + // 3. 遍历超时工单 + serviceWorkOrderList.forEach(workOrder -> { + // 查询该工单的最新记录(可能有多条记录) + ServiceWorkOrdersRecord latestRecord = workOrdersRecordMapper.selectOne( + new LambdaQueryWrapper() + .eq(ServiceWorkOrdersRecord::getOrderId, workOrder.getId()) + .orderByDesc(ServiceWorkOrdersRecord::getCreateTime) + .last("LIMIT 1") // 获取最新一条记录 + ); + if (ObjectUtil.isEmpty(latestRecord) || latestRecord.getCreateTime() == null) { + return; + } + // 判断是否超过30分钟 + long minutesElapsed = DateUtil.between(latestRecord.getCreateTime(), now, DateUnit.MINUTE); + if (minutesElapsed <= 30) { + return; // 未超时,跳过 + } + // 4. 标记原记录为废弃 + latestRecord.setStatus(WorkOrderStatusEnum.ABANDON.getValue()); + workOrdersRecordMapper.updateById(latestRecord); + log.info("工单号:{} 的原记录已废弃,超时未处理", workOrder.getOrderNo()); + // 5. 重新派单给今天所有排班人员(排除原处理人?根据业务决定) + boolean hasNewDispatch = false; + for (AttendanceUserGroup group : attendanceUserGroups) { + Long employeeId = group.getEmployeeId(); + // 可选:避免重新派给原处理人 + if (employeeId.equals(latestRecord.getHandler())) { + log.debug("跳过原处理人:{}", employeeId); + continue; + } + // 创建新的派单记录 + ServiceWorkOrdersRecord newRecord = new ServiceWorkOrdersRecord(); + newRecord.setOrderId(workOrder.getId()); + newRecord.setHandler(employeeId); + newRecord.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); + newRecord.setCreateTime(now); + workOrdersRecordMapper.insert(newRecord); + log.info("工单号:{} 已重新派发给员工ID:{}", workOrder.getOrderNo(), employeeId); + // 6. 更新主工单状态(可选:若只保留最新记录状态,也可不更新主表) + workOrder.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); // 仍为已派单 + workOrder.setHandler(employeeId); // 可清空,或设为最后一个人(根据业务) + workOrdersMapper.updateById(workOrder); + } + }); } } From 9dbccf93a83ce8dc4ff05fc98b39ce100727397a Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:07:54 +0800 Subject: [PATCH 02/43] websocket --- .../websocket/handler/PlusWebSocketHandler.java | 1 + .../websocket/holder/WebSocketSessionHolder.java | 4 ++++ .../common/websocket/utils/WebSocketUtils.java | 1 + .../controller/TbVisitorManagementController.java | 14 +++++++++++--- .../impl/TbVisitorManagementServiceImpl.java | 1 + .../sis/controller/VideoAlarmController.java | 8 ++++++-- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 557ed8eb..abb35061 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -35,6 +35,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { } WebSocketSessionHolder.addSession(loginUser.getUserId(), session); log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); + System.out.println(WebSocketSessionHolder.getSessions(loginUser.getUserId())); } /** diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java index 9c2372b8..5d286dfa 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java @@ -26,8 +26,10 @@ public class WebSocketSessionHolder { * @param session 要添加的WebSocket会话 */ public static void addSession(Long sessionKey, WebSocketSession session) { + System.out.println(USER_SESSION_MAP); removeSession(sessionKey); USER_SESSION_MAP.put(sessionKey, session); + System.out.println(USER_SESSION_MAP); } /** @@ -36,6 +38,7 @@ public class WebSocketSessionHolder { * @param sessionKey 要移除的会话键 */ public static void removeSession(Long sessionKey) { + System.out.println(USER_SESSION_MAP); WebSocketSession session = USER_SESSION_MAP.remove(sessionKey); try { session.close(CloseStatus.BAD_DATA); @@ -50,6 +53,7 @@ public class WebSocketSessionHolder { * @return 与给定会话键对应的WebSocket会话,如果不存在则返回null */ public static WebSocketSession getSessions(Long sessionKey) { + System.out.println(USER_SESSION_MAP); return USER_SESSION_MAP.get(sessionKey); } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index 35320c6e..be9bfe6c 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -36,6 +36,7 @@ public class WebSocketUtils { */ public static void sendMessage(Long sessionKey, String message) { WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey); + sendMessage(session, message); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java index f7edb234..42da562b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java @@ -7,6 +7,7 @@ import java.util.UUID; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.config.ConfigService; + import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -14,6 +15,9 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.websocket.dto.WebSocketMessageDto; +import org.dromara.common.websocket.holder.WebSocketSessionHolder; +import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.property.domain.bo.QrCodeInfo; import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.RemoteConfigService; @@ -51,8 +55,6 @@ public class TbVisitorManagementController extends BaseController { @DubboReference private final RemoteConfigService remoteConfigService; - @DubboReference(stub = "true") - private final RemoteMessageService remoteMessageService; @@ -97,7 +99,13 @@ public class TbVisitorManagementController extends BaseController { JSONObject jsonObject = new JSONObject(); jsonObject.put("type","qrcode"); jsonObject.put("date",qrcode); - remoteMessageService.publishMessage(List.of(qrCodeInfo.getUserid()),jsonObject.toString()); + System.out.println(WebSocketSessionHolder.getSessions(1L)); + System.out.println(WebSocketSessionHolder.getSessionsAll()); + WebSocketMessageDto webSocketMessage = new WebSocketMessageDto(); + webSocketMessage.setMessage(jsonObject.toString()); + webSocketMessage.setSessionKeys(List.of(qrCodeInfo.getUserid())); + WebSocketUtils.publishMessage(webSocketMessage); +// WebSocketUtils.sendMessage(qrCodeInfo.getUserid(),jsonObject.toString()); return R.ok("二维码可用"); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java index 3accd7ed..63dd52d0 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java @@ -105,6 +105,7 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi @Override public Boolean insertByBo(TbVisitorManagementBo bo) { QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId()); + RedisUtils.deleteKeys(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId()); TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class); validEntityBeforeSave(add); add.setCreateById(info.getUserid()); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java index 07bb40b2..54a1d276 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java @@ -2,12 +2,15 @@ package org.dromara.sis.controller; import com.alibaba.fastjson2.JSONObject; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.sdk.unview.service.VideoAlarmService; import org.springframework.web.bind.annotation.*; +import java.io.IOException; + /** * 宇视告警书记上报 * @@ -32,8 +35,9 @@ public class VideoAlarmController { } @PostMapping("/huawei/callback") - public void huaweiAlarm(@RequestBody Object data) { - log.info("华为上报消息,msg={}", data); + public void huaweiAlarm(HttpServletRequest request) throws IOException { + int read = request.getInputStream().read(); + log.info("华为上报消息,msg={}", read); } From 89041e783bba444fcdb68b3bf0181db0f0cc1028 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:08:38 +0800 Subject: [PATCH 03/43] websocket --- ruoyi-modules/Property/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ruoyi-modules/Property/pom.xml b/ruoyi-modules/Property/pom.xml index 1436b359..a062fa82 100644 --- a/ruoyi-modules/Property/pom.xml +++ b/ruoyi-modules/Property/pom.xml @@ -126,6 +126,10 @@ 2.4.0 compile + + org.dromara + ruoyi-common-websocket + From 2ffeb25d82fd2053739f70df8c653307fb9d5b02 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:37:20 +0800 Subject: [PATCH 04/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 97 +++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 41 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index c0b66ecd..66f4c026 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,51 +1,66 @@ -name: Gitea Actions Demo -run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 +name: Build and Push Microservices Images + on: push: - branches: [ master ] # 当main分支有推送时触发 + branches: + - [ master ] # 替换为要监听的分支 + jobs: - Explore-Gitea-Actions: + build-and-push: runs-on: ubuntu-latest + strategy: + matrix: + service: + - ruoyi-auth + - ruoyi-gateway + - ruoyi-modules/Property + - ruoyi-modules/ruoyi-gen + - ruoyi-modules/ruoyi-job + - ruoyi-modules/ruoyi-resource + - ruoyi-modules/ruoyi-system + - ruoyi-modules/ruoyi-workflow + - ruoyi-modules/Sis + - ruoyi-visual/ruoyi-monitor + - ruoyi-visual/ruoyi-nacos + - ruoyi-seata-server + - ruoyi-sentinel-dashboard + - ruoyi-snailjob-server steps: - - - name: Checkout code - uses: http://47.109.37.87:3000/bichangxiong/checkout@v4 # 使用 Gitea 镜像 + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Set Up JDK + uses: actions/setup-java@v3 with: - fetch-depth: 1 # 只拉取最新一次提交 - # - name: Checkout code - # uses: actions/checkout@v4 # 拉取代码到工作目录 - - name: Set up JDK 17 - uses: http://47.109.37.87:3000/bichangxiong/setup-java@v3 - with: - java-version: '17' + java-version: '11' # 按项目实际Java版本调整 distribution: 'temurin' - cache: maven - - name: Set up Maven - uses: stCarolas/setup-maven@v5 - with: - maven-version: 3.8.2 - - name: Install dependencies - run: mvn clean package -DskipTests -Dmaven.repo.local=/home/runner/maven-repo - - name: copy file via ssh password - uses: appleboy/scp-action@v0.1.7 - with: - host: 192.168.1.3 - username: root - password: by@2025! - port: 22 - source: "ruoyi-modules/Property/target/Property.jar,ruoyi-modules/Property/docker-compose.yml,ruoyi-modules/Property/Dockerfile" - target: "/project/runner/plus/" - - name: Deploy to server via SSH - uses: appleboy/ssh-action@v0.1.7 - with: - host: 192.168.1.3 - username: root - password: by@2025! - port: 22 - script: | - cd /project/runner/plus/ruoyi-modules/Property - docker-compose up -d --force-recreate + - name: Build Project with Maven + run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml + - name: Set Up Docker Buildx + uses: docker/setup-buildx-action@v2 - - run: echo "🍏 This job's status is ${{ job.status }}." + - name: Login to Gitea Container Registry + uses: docker/login-action@v2 + with: + registry: ${{ secrets.REGISTRY_URL }} + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASS }} + + - name: Determine Dockerfile Path + id: dockerfile-path + run: | + if [ "${{ matrix.service }}" = "ruoyi-visual/ruoyi-nacos" ]; then + echo "dockerfile_path=./ruoyi-visual/ruoyi-nacos/Dockerfile" >> $GITHUB_OUTPUT + else + echo "dockerfile_path=./${{ matrix.service }}/Dockerfile" >> $GITHUB_OUTPUT + fi + + - name: Build and Push Docker Image + uses: docker/build-push-action@v4 + with: + context: . + file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} + tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + push: true \ No newline at end of file From d005fec88c349d95ab09a324d331ef64d9da967c Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:38:48 +0800 Subject: [PATCH 05/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 66f4c026..75df1c28 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -32,7 +32,7 @@ jobs: - name: Set Up JDK uses: actions/setup-java@v3 with: - java-version: '11' # 按项目实际Java版本调整 + java-version: '17' # 按项目实际Java版本调整 distribution: 'temurin' - name: Build Project with Maven From 65586d21a3eb1854b38d3d6ec335d9eedf9705db Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 15:39:59 +0800 Subject: [PATCH 06/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 75df1c28..0740af1b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -3,7 +3,7 @@ name: Build and Push Microservices Images on: push: branches: - - [ master ] # 替换为要监听的分支 + - [main] # 替换为要监听的分支 jobs: build-and-push: From b43c3b25e069c861c66237a1fb2ab591f7cfe835 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Wed, 13 Aug 2025 16:21:30 +0800 Subject: [PATCH 07/43] bug --- .../AttendanceArrangementServiceImpl.java | 41 +++++++++++-------- .../impl/AttendanceUserGroupServiceImpl.java | 14 ++++++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index 11457675..823732b7 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -167,7 +167,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS LocalDate endDate = vo.getEndDate(); LocalDate currentDate = bo.getCurrentDate(); // //统计当前考勤组有多少条数据 -// int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId))); + int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId))); //取出attendanceScheduleCycle表中的天数 List cycleDaysList = scheduleCycleMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)).stream().map(AttendanceScheduleCycle::getDayNumber).collect(Collectors.toList()); @@ -177,9 +177,9 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS if (date.isEqual(currentDate)) { // 判断当前日期是cycleDays中的第几天 int dayNumber = date.getDayOfYear() - startDate.getDayOfYear() + 1; - cycleDay = dayNumber % cycleDaysList.size(); + cycleDay = dayNumber % count; if (cycleDay == 0) { - cycleDay = cycleDaysList.size(); + cycleDay = count; } // 根据cycleDay查询出当前日期的班次信息 AttendanceScheduleCycle cycle = scheduleCycleMapper.selectOne(Wrappers.lambdaQuery() @@ -512,15 +512,6 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS AttendanceArrangement update = MapstructUtils.convert(bo, AttendanceArrangement.class); validEntityBeforeSave(update); -// judgeDate(bo, update); - - //根据排班id获取人员id - //根据人员id删除人员信息 - //新增人员信息 - //根据排班id获取部门id - //根据部门id删除部门信息 - //新增部门信息 - //取出当前排班的id assert update != null; Long ArrangementId = update.getId(); @@ -528,19 +519,35 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS List employeeIdList = userGroupMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId)) .stream().map(AttendanceUserGroup::getEmployeeId).toList(); //根据employeeId和ArrangementId删除attendanceUserGroup表中的数据 - userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList) - .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + if (!employeeIdList.isEmpty()) { + userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList) + .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + } //根据排班id获取部门id List deptIdList = userGroupMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId)) .stream().map(AttendanceUserGroup::getDeptId).toList(); - //根据deptId和ArrangementId删除attendanceDeptGroup表中的数据 - userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getDeptId, deptIdList) - .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + if (!deptIdList.isEmpty()) { + //根据deptId和ArrangementId删除attendanceDeptGroup表中的数据 + userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getDeptId, deptIdList) + .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + } + + //根据当前排班的id查询出当前的开始时间和结束时间 + AttendanceArrangement old = baseMapper.selectById(ArrangementId); + //根据old查询出开始时间 + LocalDate oldStartDate = old.getStartDate(); + //根据old查询出结束时间 + LocalDate oldEndDate = old.getEndDate(); //用获取到的排班id向attendanceUserGroup表中批量插入数据 List userGroupList = bo.getUserGroupList(); + for (AttendanceUserGroup userGroup : userGroupList) { + userGroup.setScheduleId(bo.getId()); + userGroup.setStartDate(oldStartDate); + userGroup.setEndDate(oldEndDate); + } userGroupMapper.insertBatch(userGroupList); return baseMapper.updateById(update) > 0; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java index 63c4d027..a4703391 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.property.service.impl; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -14,6 +16,8 @@ import org.dromara.property.domain.bo.AttendanceArrangementBo; import org.dromara.property.domain.constant.StatusConstant; import org.dromara.property.domain.vo.AttendanceArrangementVo; import org.dromara.property.mapper.*; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.AttendanceUserGroupBo; import org.dromara.property.domain.vo.AttendanceUserGroupVo; @@ -48,6 +52,10 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi private final AttendanceScheduleCycleMapper scheduleCycleMapper; + @DubboReference + private ISysUserService sysUserService; + + /** * 查询排班明细 * @@ -169,8 +177,10 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi // 根据查询出来的result取出scheduleId Long scheduleId = vo.getScheduleId(); - // 根据排班的id查询出排班的人员详细信息 -// List userGroupList = baseMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, scheduleId)); + + //根据employeeId查询出用户的详细信息 + SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId()); + vo.setSysUser(sysUserVo); //根据scheduleId查询出排班的详细信息 AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, scheduleId)); From f4706ad097a2a2af3d17d53d3f48fc16548ba6e4 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 16:42:19 +0800 Subject: [PATCH 08/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 0740af1b..a49e0ace 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,9 +1,9 @@ -name: Build and Push Microservices Images +run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: branches: - - [main] # 替换为要监听的分支 + - [master] # 替换为要监听的分支 jobs: build-and-push: From e41944c90872d55433f19be98c470666e3ddcd89 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 16:50:03 +0800 Subject: [PATCH 09/43] cicd --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index a49e0ace..5f15f2d7 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -3,7 +3,7 @@ run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: branches: - - [master] # 替换为要监听的分支 + - master # 替换为要监听的分支 jobs: build-and-push: @@ -63,4 +63,4 @@ jobs: context: . file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} - push: true \ No newline at end of file + push: true From 6c4a404799c3834b53189f08d5d9379b87c70793 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 17:56:12 +0800 Subject: [PATCH 10/43] cicd --- .gitea/workflows/dev.yml | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 5f15f2d7..557660f5 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -27,22 +27,36 @@ jobs: - ruoyi-snailjob-server steps: - name: Checkout Repository - uses: actions/checkout@v3 + # 使用本地Gitea仓库的checkout action + uses: http://47.109.37.87:3000/bichangxiong/checkout@v3 + # 如果是私有仓库,可能需要令牌 + with: + token: ${{ secrets.GITEA_TOKEN }} - name: Set Up JDK - uses: actions/setup-java@v3 + # 使用本地Gitea仓库的setup-java action + uses: http://47.109.37.87:3000/bichangxiong/java-setup@v3 with: java-version: '17' # 按项目实际Java版本调整 distribution: 'temurin' + # 如果需要从本地Maven仓库拉取依赖,可以添加以下配置 + server-id: gitea + server-username: ${{ secrets.REGISTRY_USER }} + server-password: ${{ secrets.REGISTRY_PASS }} - name: Build Project with Maven run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml + env: + # 配置Maven使用本地仓库 + MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" - name: Set Up Docker Buildx - uses: docker/setup-buildx-action@v2 + # 使用本地Gitea仓库的setup-buildx-action + uses: http://47.109.37.87:3000/cicd/setup-buildx-action@v2 - name: Login to Gitea Container Registry - uses: docker/login-action@v2 + # 使用本地Gitea仓库的login-action + uses: http://47.109.37.87:3000/cicd/login-action@v2 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} @@ -58,9 +72,11 @@ jobs: fi - name: Build and Push Docker Image - uses: docker/build-push-action@v4 + # 使用本地Gitea仓库的build-push-action + uses: http://47.109.37.87:3000/cicd/build-push-action@v4 with: context: . file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true + From 727e984726fb87640e6692b836d8de9fd72b7513 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 18:31:34 +0800 Subject: [PATCH 11/43] cicd --- .gitea/workflows/dev.yml | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 557660f5..6d71a015 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -3,7 +3,7 @@ run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: branches: - - master # 替换为要监听的分支 + - master # 监听master分支 jobs: build-and-push: @@ -27,36 +27,22 @@ jobs: - ruoyi-snailjob-server steps: - name: Checkout Repository - # 使用本地Gitea仓库的checkout action - uses: http://47.109.37.87:3000/bichangxiong/checkout@v3 - # 如果是私有仓库,可能需要令牌 - with: - token: ${{ secrets.GITEA_TOKEN }} + uses: actions/checkout@v4 - name: Set Up JDK - # 使用本地Gitea仓库的setup-java action - uses: http://47.109.37.87:3000/bichangxiong/java-setup@v3 + uses: actions/setup-java@v4 with: - java-version: '17' # 按项目实际Java版本调整 + java-version: '17' distribution: 'temurin' - # 如果需要从本地Maven仓库拉取依赖,可以添加以下配置 - server-id: gitea - server-username: ${{ secrets.REGISTRY_USER }} - server-password: ${{ secrets.REGISTRY_PASS }} - name: Build Project with Maven run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml - env: - # 配置Maven使用本地仓库 - MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" - name: Set Up Docker Buildx - # 使用本地Gitea仓库的setup-buildx-action - uses: http://47.109.37.87:3000/cicd/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to Gitea Container Registry - # 使用本地Gitea仓库的login-action - uses: http://47.109.37.87:3000/cicd/login-action@v2 + uses: docker/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} @@ -72,11 +58,9 @@ jobs: fi - name: Build and Push Docker Image - # 使用本地Gitea仓库的build-push-action - uses: http://47.109.37.87:3000/cicd/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true - From d971fa0b92828daec54e3efeccb4bf7e976f0425 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 19:15:23 +0800 Subject: [PATCH 12/43] cicd --- .gitea/workflows/dev.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 6d71a015..4af6e8c7 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,13 +1,11 @@ run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 - on: push: branches: - master # 监听master分支 - jobs: build-and-push: - runs-on: ubuntu-latest + runs-on: ubuntu strategy: matrix: service: From 018714f3525a0f80d1e5549864913db8a91a84b6 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 19:19:19 +0800 Subject: [PATCH 13/43] cicd --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 4af6e8c7..8615566d 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -25,10 +25,10 @@ jobs: - ruoyi-snailjob-server steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: gitee/checkout@v4 - name: Set Up JDK - uses: actions/setup-java@v4 + uses: gitee/setup-java@v4 with: java-version: '17' distribution: 'temurin' From ae4969dad841473fc35e5364f85899bdc81f745f Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 13 Aug 2025 20:45:58 +0800 Subject: [PATCH 14/43] cicd --- .gitea/workflows/dev.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 8615566d..9c57825a 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -25,10 +25,10 @@ jobs: - ruoyi-snailjob-server steps: - name: Checkout Repository - uses: gitee/checkout@v4 + uses: http://git.missmoc.top/mocheng/checkout@v4 - name: Set Up JDK - uses: gitee/setup-java@v4 + uses: http://git.missmoc.top/mocheng/setup-java@v4 with: java-version: '17' distribution: 'temurin' @@ -37,10 +37,10 @@ jobs: run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml - name: Set Up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - name: Login to Gitea Container Registry - uses: docker/login-action@v3 + uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} @@ -56,7 +56,7 @@ jobs: fi - name: Build and Push Docker Image - uses: docker/build-push-action@v5 + uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: . file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} From fb80f4bba660cfbec3fa9b5b3f52f0b295105fdb Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 21:38:57 +0800 Subject: [PATCH 15/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 9c57825a..a0a2ca3b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -28,7 +28,7 @@ jobs: uses: http://git.missmoc.top/mocheng/checkout@v4 - name: Set Up JDK - uses: http://git.missmoc.top/mocheng/setup-java@v4 + uses: http://git.missmoc.top/mocheng/setup-java with: java-version: '17' distribution: 'temurin' From 26c292ea96954089e4e8525654586d24f2a5577f Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 21:43:40 +0800 Subject: [PATCH 16/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index a0a2ca3b..9c57825a 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -28,7 +28,7 @@ jobs: uses: http://git.missmoc.top/mocheng/checkout@v4 - name: Set Up JDK - uses: http://git.missmoc.top/mocheng/setup-java + uses: http://git.missmoc.top/mocheng/setup-java@v4 with: java-version: '17' distribution: 'temurin' From 4130a863ded27bac2f4f270ebe66c9aeb0a9066e Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Wed, 13 Aug 2025 23:47:59 +0800 Subject: [PATCH 17/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 9c57825a..c9cc2d37 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -24,6 +24,10 @@ jobs: - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: + - name: Set up Node.js + uses: http://git.missmoc.top/mocheng/setup-node@v3 + with: + node-version: '16' # 指定需要的 Node.js 版本 - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 From b09ba939ae4dd25f57a28dd196253b9c14c3cbab Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:18:25 +0800 Subject: [PATCH 18/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index c9cc2d37..501aae4d 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -31,11 +31,26 @@ jobs: - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set Up JDK - uses: http://git.missmoc.top/mocheng/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' + # - name: Set Up JDK + # uses: http://git.missmoc.top/mocheng/setup-java@v4 + # with: + # java-version: '17' + # distribution: 'temurin' + # 移除原有的 uses: actions/setup-java@v3 步骤,替换为以下内容 + - name: 使用本地 JDK(ARM 架构) + run: | + # 设置 JAVA_HOME 为本地 JDK 路径 + echo "JAVA_HOME=/java17" >> $GITHUB_ENV + # 将 JDK 的 bin 目录添加到 PATH,确保命令可直接调用(如 java、javac) + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + + - name: 验证 JDK 配置 + run: | + # 检查 Java 版本,确认是否正确指向本地 JDK + java -version + # 检查 JAVA_HOME 环境变量 + echo "JAVA_HOME: $JAVA_HOME" + - name: Build Project with Maven run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml From cf60740347c881f621ad9759d7035fa91c95809b Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:19:06 +0800 Subject: [PATCH 19/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 501aae4d..c94cf192 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -37,7 +37,7 @@ jobs: # java-version: '17' # distribution: 'temurin' # 移除原有的 uses: actions/setup-java@v3 步骤,替换为以下内容 - - name: 使用本地 JDK(ARM 架构) + - name: use JDK run: | # 设置 JAVA_HOME 为本地 JDK 路径 echo "JAVA_HOME=/java17" >> $GITHUB_ENV From abc1fdbc7abbf67ce66a6ed6c677a970a18ee5f5 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:20:00 +0800 Subject: [PATCH 20/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index c94cf192..93746941 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -36,17 +36,17 @@ jobs: # with: # java-version: '17' # distribution: 'temurin' - # 移除原有的 uses: actions/setup-java@v3 步骤,替换为以下内容 + - name: use JDK run: | - # 设置 JAVA_HOME 为本地 JDK 路径 + echo "JAVA_HOME=/java17" >> $GITHUB_ENV - # 将 JDK 的 bin 目录添加到 PATH,确保命令可直接调用(如 java、javac) + echo "$JAVA_HOME/bin" >> $GITHUB_PATH - - name: 验证 JDK 配置 + - name: test jdk run: | - # 检查 Java 版本,确认是否正确指向本地 JDK + java -version # 检查 JAVA_HOME 环境变量 echo "JAVA_HOME: $JAVA_HOME" From aa94f476b61dc7f6cf34057b249fa6da41a3486d Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:24:28 +0800 Subject: [PATCH 21/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 93746941..6a55f66f 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -40,7 +40,7 @@ jobs: - name: use JDK run: | - echo "JAVA_HOME=/java17" >> $GITHUB_ENV + echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH From c6e482b498a0b990b9629c01f38f3533cfd6b143 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:32:07 +0800 Subject: [PATCH 22/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 6a55f66f..b5831712 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -39,14 +39,11 @@ jobs: - name: use JDK run: | - echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - name: test jdk run: | - java -version # 检查 JAVA_HOME 环境变量 echo "JAVA_HOME: $JAVA_HOME" From 284d7a938c366d3dc90cf427bad3425f1984497d Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:36:59 +0800 Subject: [PATCH 23/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index b5831712..f7fdc205 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -41,12 +41,15 @@ jobs: run: | echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - name: test jdk run: | java -version # 检查 JAVA_HOME 环境变量 echo "JAVA_HOME: $JAVA_HOME" + mvn -v - name: Build Project with Maven From 86939591f5d66cad0efed0ff48679b3ab4ee9164 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:43:20 +0800 Subject: [PATCH 24/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index f7fdc205..bad5708c 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -49,7 +49,8 @@ jobs: java -version # 检查 JAVA_HOME 环境变量 echo "JAVA_HOME: $JAVA_HOME" - mvn -v + ls $MAVEN_HOME/bin/mvn + $MAVEN_HOME/bin/mvn -v - name: Build Project with Maven From dcda333d437575312175e8f81550cbdf76b6d117 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:44:35 +0800 Subject: [PATCH 25/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index bad5708c..59297ff4 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -54,7 +54,7 @@ jobs: - name: Build Project with Maven - run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml + run: $MAVEN_HOME/bin/mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml - name: Set Up Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 From 03fc2de13be0239fb97b496d89c41ffd1e0947da Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:52:42 +0800 Subject: [PATCH 26/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 174 +++++++++++++++++++++++++++++++++------ 1 file changed, 149 insertions(+), 25 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 59297ff4..53f57cd6 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,10 +1,98 @@ +# run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: branches: - master # 监听master分支 + jobs: + # 前置任务:构建并安装项目通用模块(解决内部依赖问题) + build-common-modules: + runs-on: ubuntu + steps: + - name: Checkout Repository + uses: http://git.missmoc.top/mocheng/checkout@v4 + + - name: Set up environment (JDK + Maven) + run: | + # 配置JDK(确保路径与runner中实际安装路径一致) + echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + # 配置Maven + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + # 验证环境配置 + echo "Java version:" + java -version + echo "Maven version:" + $MAVEN_HOME/bin/mvn -v + echo "JAVA_HOME: $JAVA_HOME" + echo "MAVEN_HOME: $MAVEN_HOME" + + - name: Configure Maven settings + run: | + # 创建Maven配置文件,添加必要仓库 + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml << EOF + + + + + + central + https://repo1.maven.org/maven2 + central + + + + dromara-repo + https://maven.dromara.org/repository/releases/ + dromara + + + + + + EOF + + - name: Build and install common modules + run: | + # 构建并安装项目通用模块(根据实际项目结构调整) + # 核心通用模块 + if [ -f "./ruoyi-common/pom.xml" ]; then + $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-common/pom.xml + else + echo "Warning: ruoyi-common module not found" + fi + + # API模块 + if [ -f "./ruoyi-api/pom.xml" ]; then + $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-api/pom.xml + else + echo "Warning: ruoyi-api module not found" + fi + + # BOM模块 + if [ -f "./ruoyi-common-bom/pom.xml" ]; then + $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-common-bom/pom.xml + else + echo "Warning: ruoyi-common-bom module not found" + fi + + # 其他通用模块(根据实际情况添加) + # if [ -f "./other-common-module/pom.xml" ]; then + # $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./other-common-module/pom.xml + # fi + + # 主任务:构建并推送各服务镜像 build-and-push: + needs: build-common-modules # 依赖通用模块构建完成 runs-on: ubuntu strategy: matrix: @@ -24,37 +112,53 @@ jobs: - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: - - name: Set up Node.js - uses: http://git.missmoc.top/mocheng/setup-node@v3 - with: - node-version: '16' # 指定需要的 Node.js 版本 - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 - # - name: Set Up JDK - # uses: http://git.missmoc.top/mocheng/setup-java@v4 - # with: - # java-version: '17' - # distribution: 'temurin' - - - name: use JDK - run: | - echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + - name: Set up Node.js (if needed) + uses: http://git.missmoc.top/mocheng/setup-node@v3 + with: + node-version: '16' + if: ${{ contains(matrix.service, 'frontend') || contains(matrix.service, 'vue') }} - - name: test jdk + - name: Set up environment (JDK + Maven) run: | + # 配置环境变量 + echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + # 验证环境 + echo "Java version:" java -version - # 检查 JAVA_HOME 环境变量 - echo "JAVA_HOME: $JAVA_HOME" - ls $MAVEN_HOME/bin/mvn + echo "Maven version:" $MAVEN_HOME/bin/mvn -v - - name: Build Project with Maven - run: $MAVEN_HOME/bin/mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml + run: | + # 检查服务目录是否存在 + if [ ! -d "./${{ matrix.service }}" ]; then + echo "Error: Service directory ${{ matrix.service }} not found" + exit 1 + fi + + # 检查pom.xml是否存在 + if [ ! -f "./${{ matrix.service }}/pom.xml" ]; then + echo "Error: pom.xml not found in ${{ matrix.service }}" + exit 1 + fi + + # 执行构建 + $MAVEN_HOME/bin/mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml + + # 检查构建结果 + if [ ! -d "./${{ matrix.service }}/target" ]; then + echo "Error: Build failed, target directory not found" + exit 1 + fi + + echo "Build successful for ${{ matrix.service }}" + ls -la ./${{ matrix.service }}/target/ - name: Set Up Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 @@ -69,10 +173,21 @@ jobs: - name: Determine Dockerfile Path id: dockerfile-path run: | - if [ "${{ matrix.service }}" = "ruoyi-visual/ruoyi-nacos" ]; then - echo "dockerfile_path=./ruoyi-visual/ruoyi-nacos/Dockerfile" >> $GITHUB_OUTPUT + service_path="${{ matrix.service }}" + # 检查默认路径 + default_dockerfile="$service_path/Dockerfile" + # 检查通用路径 + common_dockerfile="Dockerfile" + + if [ -f "$default_dockerfile" ]; then + echo "dockerfile_path=$default_dockerfile" >> $GITHUB_OUTPUT + echo "Using Dockerfile at $default_dockerfile" + elif [ -f "$common_dockerfile" ]; then + echo "dockerfile_path=$common_dockerfile" >> $GITHUB_OUTPUT + echo "Using root Dockerfile for $service_path" else - echo "dockerfile_path=./${{ matrix.service }}/Dockerfile" >> $GITHUB_OUTPUT + echo "Error: Dockerfile not found for $service_path" + exit 1 fi - name: Build and Push Docker Image @@ -82,3 +197,12 @@ jobs: file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true + # 启用缓存加速构建 + cache-from: type=gha + cache-to: type=gha,mode=max + # 构建参数 + build-args: | + SERVICE_NAME=${{ matrix.service }} + BUILD_TIMESTAMP=$(date +%Y%m%d%H%M%S) + # 显示构建详情 + progress: plain From 4341c88b1ca08331ce1929909bd35551ee406d9f Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:52:56 +0800 Subject: [PATCH 27/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 53f57cd6..7184d59e 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,4 +1,3 @@ -# run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: push: From d0f825e4c9db07afa6185ca11ae490b9bb489781 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 00:56:23 +0800 Subject: [PATCH 28/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 7184d59e..29bb3f78 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -18,6 +18,9 @@ jobs: echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH # 配置Maven + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH # 验证环境配置 From 507c2e4d8d7c91ebec1edaf2263a80ed8313a52c Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:00:01 +0800 Subject: [PATCH 29/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 29bb3f78..a80e8f00 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -5,29 +5,22 @@ on: - master # 监听master分支 jobs: - # 前置任务:构建并安装项目通用模块(解决内部依赖问题) build-common-modules: runs-on: ubuntu steps: - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set up environment (JDK + Maven) run: | - # 配置JDK(确保路径与runner中实际安装路径一致) echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH # 配置Maven echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # 验证环境配置 echo "Java version:" java -version echo "Maven version:" - $MAVEN_HOME/bin/mvn -v + /maven/apache-maven-3.9.11/bin/mvn -v echo "JAVA_HOME: $JAVA_HOME" echo "MAVEN_HOME: $MAVEN_HOME" @@ -68,21 +61,21 @@ jobs: # 构建并安装项目通用模块(根据实际项目结构调整) # 核心通用模块 if [ -f "./ruoyi-common/pom.xml" ]; then - $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-common/pom.xml + /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-common/pom.xml else echo "Warning: ruoyi-common module not found" fi # API模块 if [ -f "./ruoyi-api/pom.xml" ]; then - $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-api/pom.xml + /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-api/pom.xml else echo "Warning: ruoyi-api module not found" fi # BOM模块 if [ -f "./ruoyi-common-bom/pom.xml" ]; then - $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./ruoyi-common-bom/pom.xml + /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-common-bom/pom.xml else echo "Warning: ruoyi-common-bom module not found" fi From f2d66263af8aab9c7c193f367c5dd27e3bc4420d Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:06:52 +0800 Subject: [PATCH 30/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 217 +++++++++++++++++---------------------- 1 file changed, 97 insertions(+), 120 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index a80e8f00..56ee1a13 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,93 +1,111 @@ -run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 +run-name: ${{ gitea.actor }} is building with parent POM first 🚀 on: push: branches: - - master # 监听master分支 + - master jobs: - build-common-modules: + # 步骤1:构建项目主POM(父模块),安装到本地仓库 + build-parent-pom: runs-on: ubuntu steps: - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 + - name: Set up environment (JDK + Maven) run: | echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - # 配置Maven echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - echo "Java version:" java -version - echo "Maven version:" - /maven/apache-maven-3.9.11/bin/mvn -v - echo "JAVA_HOME: $JAVA_HOME" - echo "MAVEN_HOME: $MAVEN_HOME" + $MAVEN_HOME/bin/mvn -v - - name: Configure Maven settings + - name: Configure Maven settings (本地优先 + 官方仓库) run: | - # 创建Maven配置文件,添加必要仓库 mkdir -p ~/.m2 cat > ~/.m2/settings.xml << EOF - - - - central - https://repo1.maven.org/maven2 - central - - - - dromara-repo - https://maven.dromara.org/repository/releases/ - dromara - - - - + ${user.home}/.m2/repository + + + local-first + + + local-repo + file://${user.home}/.m2/repository + true + true + + + dromara-releases + https://maven.dromara.org/repository/releases/ + + + public + https://mirrors.huaweicloud.com/repository/maven/ + false + + + + + + local-first + EOF + - name: Build and install parent POM (主POM) + run: | + # 主POM路径(通常在项目根目录) + MAIN_POM_PATH="./pom.xml" + if [ ! -f "$MAIN_POM_PATH" ]; then + echo "Error: 主POM文件 $MAIN_POM_PATH 不存在" + exit 1 + fi + # -N 表示只构建当前模块(不构建子模块),仅安装父POM到本地仓库 + $MAVEN_HOME/bin/mvn clean install -N -U -DskipTests -f $MAIN_POM_PATH + # 验证父POM是否安装成功 + ls ~/.m2/repository/org/dromara/ruoyi-cloud-plus/${{ github.sha }}/ # 替换为实际groupId/artifactId + + # 步骤2:构建通用模块(依赖主POM) + build-common-modules: + needs: build-parent-pom + runs-on: ubuntu + steps: + - name: Checkout Repository + uses: http://git.missmoc.top/mocheng/checkout@v4 + + - name: Set up environment + run: | + echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + - name: Build and install common modules run: | - # 构建并安装项目通用模块(根据实际项目结构调整) - # 核心通用模块 - if [ -f "./ruoyi-common/pom.xml" ]; then - /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-common/pom.xml - else - echo "Warning: ruoyi-common module not found" - fi - - # API模块 - if [ -f "./ruoyi-api/pom.xml" ]; then - /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-api/pom.xml - else - echo "Warning: ruoyi-api module not found" - fi - - # BOM模块 - if [ -f "./ruoyi-common-bom/pom.xml" ]; then - /maven/apache-maven-3.9.11/bin/mvn clean install -DskipTests -f ./ruoyi-common-bom/pom.xml - else - echo "Warning: ruoyi-common-bom module not found" - fi - - # 其他通用模块(根据实际情况添加) - # if [ -f "./other-common-module/pom.xml" ]; then - # $MAVEN_HOME/bin/mvn clean install -DskipTests -f ./other-common-module/pom.xml - # fi + # 通用模块列表(根据项目结构调整) + COMMON_MODULES=( + "ruoyi-common" + "ruoyi-api" + "ruoyi-common-bom" + "ruoyi-common-alibaba-bom" + ) + for module in "${COMMON_MODULES[@]}"; do + POM_PATH="./$module/pom.xml" + if [ -f "$POM_PATH" ]; then + echo "Building $module..." + $MAVEN_HOME/bin/mvn clean install -U -DskipTests -f $POM_PATH + else + echo "Warning: 通用模块 $module 不存在(路径:$POM_PATH)" + fi + done - # 主任务:构建并推送各服务镜像 - build-and-push: - needs: build-common-modules # 依赖通用模块构建完成 + # 步骤3:分服务构建镜像(依赖通用模块) + build-and-push-services: + needs: build-common-modules runs-on: ubuntu strategy: matrix: @@ -110,55 +128,30 @@ jobs: - name: Checkout Repository uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set up Node.js (if needed) - uses: http://git.missmoc.top/mocheng/setup-node@v3 - with: - node-version: '16' - if: ${{ contains(matrix.service, 'frontend') || contains(matrix.service, 'vue') }} - - - name: Set up environment (JDK + Maven) + - name: Set up environment run: | - # 配置环境变量 echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # 验证环境 - echo "Java version:" - java -version - echo "Maven version:" - $MAVEN_HOME/bin/mvn -v - - name: Build Project with Maven + - name: Build service with Maven (依赖主POM和通用模块) run: | - # 检查服务目录是否存在 - if [ ! -d "./${{ matrix.service }}" ]; then - echo "Error: Service directory ${{ matrix.service }} not found" + SERVICE_PATH="${{ matrix.service }}" + POM_PATH="./$SERVICE_PATH/pom.xml" + if [ ! -f "$POM_PATH" ]; then + echo "Error: 服务 $SERVICE_PATH 的POM文件不存在" exit 1 fi - - # 检查pom.xml是否存在 - if [ ! -f "./${{ matrix.service }}/pom.xml" ]; then - echo "Error: pom.xml not found in ${{ matrix.service }}" - exit 1 - fi - - # 执行构建 - $MAVEN_HOME/bin/mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml - - # 检查构建结果 - if [ ! -d "./${{ matrix.service }}/target" ]; then - echo "Error: Build failed, target directory not found" - exit 1 - fi - - echo "Build successful for ${{ matrix.service }}" - ls -la ./${{ matrix.service }}/target/ + # 构建服务(依赖已安装的主POM和通用模块) + $MAVEN_HOME/bin/mvn clean package -U -DskipTests -f $POM_PATH + # 检查构建产物 + ls ./$SERVICE_PATH/target/ - name: Set Up Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: Login to Gitea Container Registry + - name: Login to Registry uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} @@ -168,21 +161,12 @@ jobs: - name: Determine Dockerfile Path id: dockerfile-path run: | - service_path="${{ matrix.service }}" - # 检查默认路径 - default_dockerfile="$service_path/Dockerfile" - # 检查通用路径 - common_dockerfile="Dockerfile" - - if [ -f "$default_dockerfile" ]; then - echo "dockerfile_path=$default_dockerfile" >> $GITHUB_OUTPUT - echo "Using Dockerfile at $default_dockerfile" - elif [ -f "$common_dockerfile" ]; then - echo "dockerfile_path=$common_dockerfile" >> $GITHUB_OUTPUT - echo "Using root Dockerfile for $service_path" + SERVICE_PATH="${{ matrix.service }}" + DOCKERFILE="$SERVICE_PATH/Dockerfile" + if [ -f "$DOCKERFILE" ]; then + echo "dockerfile_path=$DOCKERFILE" >> $GITHUB_OUTPUT else - echo "Error: Dockerfile not found for $service_path" - exit 1 + echo "dockerfile_path=./Dockerfile" >> $GITHUB_OUTPUT fi - name: Build and Push Docker Image @@ -192,12 +176,5 @@ jobs: file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true - # 启用缓存加速构建 cache-from: type=gha - cache-to: type=gha,mode=max - # 构建参数 - build-args: | - SERVICE_NAME=${{ matrix.service }} - BUILD_TIMESTAMP=$(date +%Y%m%d%H%M%S) - # 显示构建详情 - progress: plain + cache-to: type=gha,mode=max \ No newline at end of file From 22dadcfdd9c4d75c1c353f0a83245971e154e64e Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:08:21 +0800 Subject: [PATCH 31/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 73 ++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 56ee1a13..05b91aa3 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -5,7 +5,6 @@ on: - master jobs: - # 步骤1:构建项目主POM(父模块),安装到本地仓库 build-parent-pom: runs-on: ubuntu steps: @@ -14,14 +13,31 @@ jobs: - name: Set up environment (JDK + Maven) run: | + # 配置 JDK(确认路径正确,与实际安装一致) echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + # 修复 Maven 路径:先确认 runner 中 Maven 的实际安装位置 + # 常见路径:/usr/local/maven、/opt/maven、/maven 等,根据实际情况修改 + MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 关键:替换为 runner 中 Maven 的真实路径 + + # 验证 Maven 可执行文件是否存在 + if [ ! -f "$MAVEN_ACTUAL_PATH/bin/mvn" ]; then + echo "Error: Maven 可执行文件不存在于 $MAVEN_ACTUAL_PATH/bin/mvn" + exit 1 + fi + + # 配置 Maven 环境变量 + echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV + echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH + + # 验证配置 + echo "Java 版本:" java -version - $MAVEN_HOME/bin/mvn -v + echo "Maven 版本:" + mvn -v # 此处若仍报错,说明路径确实错误,需重新确认 - - name: Configure Maven settings (本地优先 + 官方仓库) + - name: Configure Maven settings run: | mkdir -p ~/.m2 cat > ~/.m2/settings.xml << EOF @@ -35,18 +51,11 @@ jobs: local-repo file://${user.home}/.m2/repository - true - true dromara-releases https://maven.dromara.org/repository/releases/ - - public - https://mirrors.huaweicloud.com/repository/maven/ - false - @@ -56,20 +65,15 @@ jobs: EOF - - name: Build and install parent POM (主POM) + - name: Build and install parent POM run: | - # 主POM路径(通常在项目根目录) MAIN_POM_PATH="./pom.xml" if [ ! -f "$MAIN_POM_PATH" ]; then - echo "Error: 主POM文件 $MAIN_POM_PATH 不存在" + echo "Error: 主POM文件不存在" exit 1 fi - # -N 表示只构建当前模块(不构建子模块),仅安装父POM到本地仓库 - $MAVEN_HOME/bin/mvn clean install -N -U -DskipTests -f $MAIN_POM_PATH - # 验证父POM是否安装成功 - ls ~/.m2/repository/org/dromara/ruoyi-cloud-plus/${{ github.sha }}/ # 替换为实际groupId/artifactId + mvn clean install -N -U -DskipTests -f $MAIN_POM_PATH - # 步骤2:构建通用模块(依赖主POM) build-common-modules: needs: build-parent-pom runs-on: ubuntu @@ -81,29 +85,27 @@ jobs: run: | echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致 + echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV + echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH + mvn -v # 验证 - name: Build and install common modules run: | - # 通用模块列表(根据项目结构调整) COMMON_MODULES=( "ruoyi-common" "ruoyi-api" "ruoyi-common-bom" - "ruoyi-common-alibaba-bom" ) for module in "${COMMON_MODULES[@]}"; do POM_PATH="./$module/pom.xml" if [ -f "$POM_PATH" ]; then - echo "Building $module..." - $MAVEN_HOME/bin/mvn clean install -U -DskipTests -f $POM_PATH + mvn clean install -U -DskipTests -f $POM_PATH else - echo "Warning: 通用模块 $module 不存在(路径:$POM_PATH)" + echo "Warning: 模块 $module 不存在" fi done - # 步骤3:分服务构建镜像(依赖通用模块) build-and-push-services: needs: build-common-modules runs-on: ubuntu @@ -132,21 +134,20 @@ jobs: run: | echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=/maven/apache-maven-3.9.11" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致 + echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV + echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH + mvn -v # 验证 - - name: Build service with Maven (依赖主POM和通用模块) + - name: Build service with Maven run: | SERVICE_PATH="${{ matrix.service }}" POM_PATH="./$SERVICE_PATH/pom.xml" if [ ! -f "$POM_PATH" ]; then - echo "Error: 服务 $SERVICE_PATH 的POM文件不存在" + echo "Error: POM文件不存在" exit 1 fi - # 构建服务(依赖已安装的主POM和通用模块) - $MAVEN_HOME/bin/mvn clean package -U -DskipTests -f $POM_PATH - # 检查构建产物 - ls ./$SERVICE_PATH/target/ + mvn clean package -U -DskipTests -f $POM_PATH - name: Set Up Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 From 7bbf011dcfaeb9cf9fcdbee0c131173209833b28 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:11:07 +0800 Subject: [PATCH 32/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 173 ++++++++++++++++++++++++--------------- 1 file changed, 109 insertions(+), 64 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 05b91aa3..889a5863 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,43 +1,47 @@ -run-name: ${{ gitea.actor }} is building with parent POM first 🚀 +run-name: ${{ gitea.actor }} 构建主POM并分模块打包 🚀 on: push: branches: - master jobs: + # 第一步:构建主POM(父模块)并安装到本地仓库 build-parent-pom: runs-on: ubuntu steps: - - name: Checkout Repository + - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set up environment (JDK + Maven) + - name: 配置环境变量(使用绝对路径) run: | - # 配置 JDK(确认路径正确,与实际安装一致) - echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH + # 配置JDK绝对路径(必须与runner中实际路径一致) + export JAVA_HOME="/java17/java17" + # 配置Maven绝对路径(必须与runner中实际路径一致) + export MAVEN_HOME="/maven/apache-maven-3.9.11" - # 修复 Maven 路径:先确认 runner 中 Maven 的实际安装位置 - # 常见路径:/usr/local/maven、/opt/maven、/maven 等,根据实际情况修改 - MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 关键:替换为 runner 中 Maven 的真实路径 - - # 验证 Maven 可执行文件是否存在 - if [ ! -f "$MAVEN_ACTUAL_PATH/bin/mvn" ]; then - echo "Error: Maven 可执行文件不存在于 $MAVEN_ACTUAL_PATH/bin/mvn" + # 验证JDK和Maven可执行文件是否存在 + if [ ! -f "$JAVA_HOME/bin/java" ]; then + echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" + exit 1 + fi + if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then + echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" exit 1 fi - # 配置 Maven 环境变量 - echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV - echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH + # 写入环境变量(确保后续步骤可用) + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - # 验证配置 - echo "Java 版本:" - java -version - echo "Maven 版本:" - mvn -v # 此处若仍报错,说明路径确实错误,需重新确认 + # 验证环境配置 + echo "=== JDK版本 ===" + "$JAVA_HOME/bin/java" -version + echo "=== Maven版本 ===" + "$MAVEN_HOME/bin/mvn" -v - - name: Configure Maven settings + - name: 配置Maven仓库(本地优先) run: | mkdir -p ~/.m2 cat > ~/.m2/settings.xml << EOF @@ -51,6 +55,8 @@ jobs: local-repo file://${user.home}/.m2/repository + true + true dromara-releases @@ -65,47 +71,72 @@ jobs: EOF - - name: Build and install parent POM + - name: 构建并安装主POM(父模块) run: | - MAIN_POM_PATH="./pom.xml" - if [ ! -f "$MAIN_POM_PATH" ]; then - echo "Error: 主POM文件不存在" + # 主POM绝对路径 + MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" + echo "主POM路径:$MAIN_POM_ABSOLUTE_PATH" + + if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then + echo "错误:主POM文件不存在于 $MAIN_POM_ABSOLUTE_PATH" exit 1 fi - mvn clean install -N -U -DskipTests -f $MAIN_POM_PATH + + # 使用绝对路径执行Maven命令,仅构建父模块(-N) + "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH" + + # 验证主POM是否安装成功 + echo "=== 验证主POM安装 ===" + ls -la ~/.m2/repository/org/dromara/ruoyi-cloud-plus/ + # 第二步:构建通用模块(依赖主POM) build-common-modules: needs: build-parent-pom runs-on: ubuntu steps: - - name: Checkout Repository + - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set up environment + - name: 配置环境变量(绝对路径) run: | - echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致 - echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV - echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH - mvn -v # 验证 + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: Build and install common modules + - name: 构建并安装通用模块 run: | + # 通用模块列表(根据实际项目结构调整) COMMON_MODULES=( "ruoyi-common" "ruoyi-api" "ruoyi-common-bom" + "ruoyi-common-alibaba-bom" + "ruoyi-api-bom" ) + for module in "${COMMON_MODULES[@]}"; do - POM_PATH="./$module/pom.xml" - if [ -f "$POM_PATH" ]; then - mvn clean install -U -DskipTests -f $POM_PATH - else - echo "Warning: 模块 $module 不存在" + # 模块POM的绝对路径 + MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + echo "=== 构建模块:$module ===" + echo "POM路径:$MODULE_POM_ABSOLUTE_PATH" + + if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + echo "警告:模块 $module 的POM文件不存在,跳过" + continue fi + + # 使用Maven绝对路径执行命令 + "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH" + + # 验证模块是否安装成功 + MODULE_GROUP_ID="org.dromara" + ls -la ~/.m2/repository/"${MODULE_GROUP_ID//.//}"/"$module"/ done + # 第三步:分服务构建镜像并上传(依赖通用模块) build-and-push-services: needs: build-common-modules runs-on: ubuntu @@ -127,55 +158,69 @@ jobs: - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: - - name: Checkout Repository + - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: Set up environment + - name: 配置环境变量(绝对路径) run: | - echo "JAVA_HOME=/java17/java17" >> $GITHUB_ENV + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - MAVEN_ACTUAL_PATH="/maven/apache-maven-3.9.11" # 与上文一致 - echo "MAVEN_HOME=$MAVEN_ACTUAL_PATH" >> $GITHUB_ENV - echo "$MAVEN_ACTUAL_PATH/bin" >> $GITHUB_PATH - mvn -v # 验证 + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: Build service with Maven + - name: 构建服务模块 run: | - SERVICE_PATH="${{ matrix.service }}" - POM_PATH="./$SERVICE_PATH/pom.xml" - if [ ! -f "$POM_PATH" ]; then - echo "Error: POM文件不存在" + SERVICE_NAME="${{ matrix.service }}" + # 服务POM的绝对路径 + SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" + echo "=== 构建服务:$SERVICE_NAME ===" + echo "POM路径:$SERVICE_POM_ABSOLUTE_PATH" + + if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then + echo "错误:服务 $SERVICE_NAME 的POM文件不存在" exit 1 fi - mvn clean package -U -DskipTests -f $POM_PATH + + # 使用Maven绝对路径执行打包命令 + "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" + + # 验证构建产物 + echo "=== 构建产物 ===" + ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/" - - name: Set Up Docker Buildx + - name: 配置Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: Login to Registry + - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - - name: Determine Dockerfile Path + - name: 确定Dockerfile路径 id: dockerfile-path run: | - SERVICE_PATH="${{ matrix.service }}" - DOCKERFILE="$SERVICE_PATH/Dockerfile" - if [ -f "$DOCKERFILE" ]; then - echo "dockerfile_path=$DOCKERFILE" >> $GITHUB_OUTPUT + SERVICE_NAME="${{ matrix.service }}" + DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" + + if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then + echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT + echo "使用Dockerfile:$DOCKERFILE_ABSOLUTE_PATH" else - echo "dockerfile_path=./Dockerfile" >> $GITHUB_OUTPUT + echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT + echo "使用根目录Dockerfile:${GITHUB_WORKSPACE}/Dockerfile" fi - - name: Build and Push Docker Image + - name: 构建并推送Docker镜像 uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: . + context: "${GITHUB_WORKSPACE}" file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file + cache-to: type=gha,mode=max + \ No newline at end of file From 33ea126b95f9225f875aa5fca8dd980d2b73a570 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:17:03 +0800 Subject: [PATCH 33/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 889a5863..a2305c1c 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -47,14 +47,14 @@ jobs: cat > ~/.m2/settings.xml << EOF - ${user.home}/.m2/repository + /root/.m2/repository local-first local-repo - file://${user.home}/.m2/repository + file:///root/.m2/repository true true From 43f07b739653018b820bedce6a2b02fd3d45deda Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:22:44 +0800 Subject: [PATCH 34/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 252 +++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 115 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index a2305c1c..0d2e7861 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,103 +1,138 @@ -run-name: ${{ gitea.actor }} 构建主POM并分模块打包 🚀 +run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: branches: - master jobs: - # 第一步:构建主POM(父模块)并安装到本地仓库 build-parent-pom: - runs-on: ubuntu - steps: - - name: 拉取代码仓库 - uses: http://git.missmoc.top/mocheng/checkout@v4 - - - name: 配置环境变量(使用绝对路径) - run: | - # 配置JDK绝对路径(必须与runner中实际路径一致) - export JAVA_HOME="/java17/java17" - # 配置Maven绝对路径(必须与runner中实际路径一致) - export MAVEN_HOME="/maven/apache-maven-3.9.11" - - # 验证JDK和Maven可执行文件是否存在 - if [ ! -f "$JAVA_HOME/bin/java" ]; then - echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" - exit 1 - fi - if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then - echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" - exit 1 - fi - - # 写入环境变量(确保后续步骤可用) - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - # 验证环境配置 - echo "=== JDK版本 ===" - "$JAVA_HOME/bin/java" -version - echo "=== Maven版本 ===" - "$MAVEN_HOME/bin/mvn" -v - - - name: 配置Maven仓库(本地优先) - run: | - mkdir -p ~/.m2 - cat > ~/.m2/settings.xml << EOF - - - /root/.m2/repository - - - local-first - - - local-repo - file:///root/.m2/repository - true - true - - - dromara-releases - https://maven.dromara.org/repository/releases/ - - - - - - local-first - - - EOF - - - name: 构建并安装主POM(父模块) - run: | - # 主POM绝对路径 - MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" - echo "主POM路径:$MAIN_POM_ABSOLUTE_PATH" - - if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then - echo "错误:主POM文件不存在于 $MAIN_POM_ABSOLUTE_PATH" - exit 1 - fi - - # 使用绝对路径执行Maven命令,仅构建父模块(-N) - "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH" - - # 验证主POM是否安装成功 - echo "=== 验证主POM安装 ===" - ls -la ~/.m2/repository/org/dromara/ruoyi-cloud-plus/ - - # 第二步:构建通用模块(依赖主POM) - build-common-modules: - needs: build-parent-pom runs-on: ubuntu steps: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - name: 配置环境变量(绝对路径) + run: | + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + + if [ ! -f "$JAVA_HOME/bin/java" ]; then + echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" + exit 1 + fi + if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then + echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" + exit 1 + fi + + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + "$JAVA_HOME/bin/java" -version + "$MAVEN_HOME/bin/mvn" -v + + - name: 配置Maven仓库 + run: | + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml << EOF + + + $HOME/.m2/repository + + + multi-repo + + + local-repo + file://$HOME/.m2/repository + + + dromara-releases + https://maven.dromara.org/repository/releases/ + + + aliyun-public + https://maven.aliyun.com/repository/public + + + + + + multi-repo + + + EOF + + - name: 手动安装必要BOM依赖 + run: | + mkdir -p /tmp/maven-dependencies + + declare -A BOM_ARTIFACTS=( + ["ruoyi-common-alibaba-bom"]="2.4.0" + ["ruoyi-common-bom"]="2.4.0" + ["ruoyi-api-bom"]="2.4.0" + ) + + for artifact in "${!BOM_ARTIFACTS[@]}"; do + version=${BOM_ARTIFACTS[$artifact]} + group_id="org.dromara" + local_path="$HOME/.m2/repository/${group_id//.//}/$artifact/$version/$artifact-$version.pom" + + if [ -f "$local_path" ]; then + echo "本地已存在 $artifact:$version,跳过" + continue + fi + + repos=( + "https://maven.dromara.org/repository/releases" + "https://maven.aliyun.com/repository/public" + ) + + downloaded=false + for repo in "${repos[@]}"; do + url="$repo/${group_id//.//}/$artifact/$version/$artifact-$version.pom" + if wget -q -O "/tmp/maven-dependencies/$artifact-$version.pom" "$url"; then + "$MAVEN_HOME/bin/mvn" install:install-file \ + -Dfile="/tmp/maven-dependencies/$artifact-$version.pom" \ + -DgroupId="$group_id" \ + -DartifactId="$artifact" \ + -Dversion="$version" \ + -Dpackaging=pom + downloaded=true + break + fi + done + done + + - name: 构建主POM(仅本地安装,不上传) + run: | + MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" + if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then + echo "错误:主POM文件不存在" + exit 1 + fi + + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:主POM构建失败" + exit 1 + fi + sleep 10 + done + + build-common-modules: + needs: build-parent-pom + runs-on: ubuntu + steps: + - name: 拉取代码仓库 + uses: http://git.missmoc.top/mocheng/checkout@v4 + + - name: 配置环境变量 run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" @@ -106,9 +141,8 @@ jobs: echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: 构建并安装通用模块 + - name: 构建通用模块(仅本地使用,不上传) run: | - # 通用模块列表(根据实际项目结构调整) COMMON_MODULES=( "ruoyi-common" "ruoyi-api" @@ -118,25 +152,24 @@ jobs: ) for module in "${COMMON_MODULES[@]}"; do - # 模块POM的绝对路径 MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - echo "=== 构建模块:$module ===" - echo "POM路径:$MODULE_POM_ABSOLUTE_PATH" - if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - echo "警告:模块 $module 的POM文件不存在,跳过" + echo "警告:模块 $module 不存在,跳过" continue fi - # 使用Maven绝对路径执行命令 - "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH" - - # 验证模块是否安装成功 - MODULE_GROUP_ID="org.dromara" - ls -la ~/.m2/repository/"${MODULE_GROUP_ID//.//}"/"$module"/ + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:模块 $module 构建失败" + exit 1 + fi + sleep 10 + done done - # 第三步:分服务构建镜像并上传(依赖通用模块) build-and-push-services: needs: build-common-modules runs-on: ubuntu @@ -161,7 +194,7 @@ jobs: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置环境变量(绝对路径) + - name: 配置环境变量 run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" @@ -170,25 +203,16 @@ jobs: echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - name: 构建服务模块 + - name: 构建服务模块(仅用于镜像构建,不上传JAR) run: | SERVICE_NAME="${{ matrix.service }}" - # 服务POM的绝对路径 SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" - echo "=== 构建服务:$SERVICE_NAME ===" - echo "POM路径:$SERVICE_POM_ABSOLUTE_PATH" - if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then echo "错误:服务 $SERVICE_NAME 的POM文件不存在" exit 1 fi - # 使用Maven绝对路径执行打包命令 "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - # 验证构建产物 - echo "=== 构建产物 ===" - ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/" - name: 配置Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 @@ -208,13 +232,11 @@ jobs: if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT - echo "使用Dockerfile:$DOCKERFILE_ABSOLUTE_PATH" else echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT - echo "使用根目录Dockerfile:${GITHUB_WORKSPACE}/Dockerfile" fi - - name: 构建并推送Docker镜像 + - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${GITHUB_WORKSPACE}" From d7c4b2ba54588445a1079957939a51bdebc80e3b Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:27:48 +0800 Subject: [PATCH 35/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 0d2e7861..3382d22f 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -48,10 +48,6 @@ jobs: local-repo file://$HOME/.m2/repository - - dromara-releases - https://maven.dromara.org/repository/releases/ - aliyun-public https://maven.aliyun.com/repository/public @@ -86,7 +82,6 @@ jobs: fi repos=( - "https://maven.dromara.org/repository/releases" "https://maven.aliyun.com/repository/public" ) From 8bbf5f0eca97d75b87f618cf6025bb9eaa0f76a9 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:30:54 +0800 Subject: [PATCH 36/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 42 +--------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 3382d22f..272bd88c 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -61,46 +61,6 @@ jobs: EOF - - name: 手动安装必要BOM依赖 - run: | - mkdir -p /tmp/maven-dependencies - - declare -A BOM_ARTIFACTS=( - ["ruoyi-common-alibaba-bom"]="2.4.0" - ["ruoyi-common-bom"]="2.4.0" - ["ruoyi-api-bom"]="2.4.0" - ) - - for artifact in "${!BOM_ARTIFACTS[@]}"; do - version=${BOM_ARTIFACTS[$artifact]} - group_id="org.dromara" - local_path="$HOME/.m2/repository/${group_id//.//}/$artifact/$version/$artifact-$version.pom" - - if [ -f "$local_path" ]; then - echo "本地已存在 $artifact:$version,跳过" - continue - fi - - repos=( - "https://maven.aliyun.com/repository/public" - ) - - downloaded=false - for repo in "${repos[@]}"; do - url="$repo/${group_id//.//}/$artifact/$version/$artifact-$version.pom" - if wget -q -O "/tmp/maven-dependencies/$artifact-$version.pom" "$url"; then - "$MAVEN_HOME/bin/mvn" install:install-file \ - -Dfile="/tmp/maven-dependencies/$artifact-$version.pom" \ - -DgroupId="$group_id" \ - -DartifactId="$artifact" \ - -Dversion="$version" \ - -Dpackaging=pom - downloaded=true - break - fi - done - done - - name: 构建主POM(仅本地安装,不上传) run: | MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" @@ -111,7 +71,7 @@ jobs: retries=3 count=0 - until "$MAVEN_HOME/bin/mvn" clean install -N -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do + until "$MAVEN_HOME/bin/mvn" clean package install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:主POM构建失败" From cf473bcbc85d6ecc23c7318010e494987b58ab71 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:41:25 +0800 Subject: [PATCH 37/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 272bd88c..23deaf32 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -71,7 +71,7 @@ jobs: retries=3 count=0 - until "$MAVEN_HOME/bin/mvn" clean package install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do + until "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:主POM构建失败" From 51c6dd2cc1b624856803d40d9d9df7954680156a Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 14 Aug 2025 01:57:52 +0800 Subject: [PATCH 38/43] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=89=93=E5=8C=85=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 3e55175f..267aca5a 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -14,8 +14,8 @@ ruoyi-job ruoyi-resource ruoyi-workflow - Property - Sis + + ruoyi-modules From e52ee15f0f4fd21893ac8ae32bc20680f63e0030 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:19:06 +0800 Subject: [PATCH 39/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 168 ++++++++++----------------------------- 1 file changed, 40 insertions(+), 128 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 23deaf32..9de1eb6e 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,134 +1,72 @@ -run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 +run-name: ${{ gitea.actor }} 构建并推送服务镜像 🚀 on: push: - branches: - - master + branches: [master] jobs: - build-parent-pom: + # 阶段1:通过主POM统一构建所有模块 + build-all: runs-on: ubuntu steps: - - name: 拉取代码仓库 + - name: 拉取代码 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置环境变量(绝对路径) + - name: 配置JDK和Maven run: | + # 配置环境变量 export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" - if [ ! -f "$JAVA_HOME/bin/java" ]; then - echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" - exit 1 - fi - if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then - echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" - exit 1 - fi + # 验证环境 + [ -d "$JAVA_HOME" ] || { echo "JDK不存在: $JAVA_HOME"; exit 1; } + [ -d "$MAVEN_HOME" ] || { echo "Maven不存在: $MAVEN_HOME"; exit 1; } + # 导出环境变量 echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - "$JAVA_HOME/bin/java" -version - "$MAVEN_HOME/bin/mvn" -v - name: 配置Maven仓库 run: | mkdir -p ~/.m2 - cat > ~/.m2/settings.xml << EOF + cat > ~/.m2/settings.xml << 'EOF' - $HOME/.m2/repository + ${user.home}/.m2/repository - multi-repo + aliyun - local-repo - file://$HOME/.m2/repository - - - aliyun-public + aliyun https://maven.aliyun.com/repository/public + true + true - multi-repo + aliyun EOF - - name: 构建主POM(仅本地安装,不上传) + - name: 主POM统一打包 run: | - MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" - if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then - echo "错误:主POM文件不存在" - exit 1 - fi + # 从根目录构建所有模块 + mvn clean package -U -DskipTests -f pom.xml - retries=3 - count=0 - until "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do - count=$((count + 1)) - if [ $count -ge $retries ]; then - echo "错误:主POM构建失败" - exit 1 - fi - sleep 10 - done + # 查看构建产物 + find . -name "*.jar" -path "*/target/*" - build-common-modules: - needs: build-parent-pom - runs-on: ubuntu - steps: - - name: 拉取代码仓库 - uses: http://git.missmoc.top/mocheng/checkout@v4 - - - name: 配置环境变量 - run: | - export JAVA_HOME="/java17/java17" - export MAVEN_HOME="/maven/apache-maven-3.9.11" - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - - name: 构建通用模块(仅本地使用,不上传) - run: | - COMMON_MODULES=( - "ruoyi-common" - "ruoyi-api" - "ruoyi-common-bom" - "ruoyi-common-alibaba-bom" - "ruoyi-api-bom" - ) - - for module in "${COMMON_MODULES[@]}"; do - MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" - if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then - echo "警告:模块 $module 不存在,跳过" - continue - fi - - retries=3 - count=0 - until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do - count=$((count + 1)) - if [ $count -ge $retries ]; then - echo "错误:模块 $module 构建失败" - exit 1 - fi - sleep 10 - done - done - - build-and-push-services: - needs: build-common-modules + # 阶段2:为每个服务构建并推送镜像 + build-images: + needs: build-all runs-on: ubuntu strategy: + fail-fast: false matrix: service: - ruoyi-auth @@ -146,58 +84,32 @@ jobs: - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: - - name: 拉取代码仓库 + - name: 拉取代码 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置环境变量 - run: | - export JAVA_HOME="/java17/java17" - export MAVEN_HOME="/maven/apache-maven-3.9.11" - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - - name: 构建服务模块(仅用于镜像构建,不上传JAR) - run: | - SERVICE_NAME="${{ matrix.service }}" - SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" - if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then - echo "错误:服务 $SERVICE_NAME 的POM文件不存在" - exit 1 - fi - - "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - - name: 配置Docker Buildx + - name: 配置Docker构建环境 uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: 登录到容器仓库 + - name: 登录容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - - name: 确定Dockerfile路径 - id: dockerfile-path - run: | - SERVICE_NAME="${{ matrix.service }}" - DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" - - if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then - echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT - else - echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT - fi - - - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) + - name: 构建并推送镜像 uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: "${GITHUB_WORKSPACE}" - file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} - tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + context: . + file: ./${{ matrix.service }}/Dockerfile + tags: | + ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:latest push: true cache-from: type=gha cache-to: type=gha,mode=max + # 仅当Dockerfile或相关目录变化时构建 + paths: + - ${{ matrix.service }}/** + - pom.xml \ No newline at end of file From 573bd4cb8cd9fa6f0208b8f840dbaa39dc92ade3 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:24:24 +0800 Subject: [PATCH 40/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 9de1eb6e..910e1f5b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -108,8 +108,7 @@ jobs: push: true cache-from: type=gha cache-to: type=gha,mode=max - # 仅当Dockerfile或相关目录变化时构建 paths: - - ${{ matrix.service }}/** + - ${{ matrix.service }}/**/* - pom.xml \ No newline at end of file From 269c105282bdfe9f9c7d120ad781730c313549bc Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:26:30 +0800 Subject: [PATCH 41/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 61 ++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 910e1f5b..1ce12579 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -8,28 +8,35 @@ jobs: build-all: runs-on: ubuntu steps: - - name: 拉取代码 + - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置JDK和Maven + - name: 配置JDK和Maven环境 run: | - # 配置环境变量 + # 配置环境变量路径 export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" - # 验证环境 - [ -d "$JAVA_HOME" ] || { echo "JDK不存在: $JAVA_HOME"; exit 1; } - [ -d "$MAVEN_HOME" ] || { echo "Maven不存在: $MAVEN_HOME"; exit 1; } + # 验证环境是否存在 + [ -d "$JAVA_HOME" ] || { echo "错误:JDK目录不存在 - $JAVA_HOME"; exit 1; } + [ -d "$MAVEN_HOME" ] || { echo "错误:Maven目录不存在 - $MAVEN_HOME"; exit 1; } - # 导出环境变量 + # 导出环境变量到工作流 echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + # 输出版本信息验证配置 + java -version + mvn -v - - name: 配置Maven仓库 + - name: 配置Maven仓库(阿里云) run: | + # 创建Maven配置目录 mkdir -p ~/.m2 + + # 写入settings.xml配置 cat > ~/.m2/settings.xml << 'EOF' @@ -39,7 +46,7 @@ jobs: aliyun - aliyun + aliyun-public https://maven.aliyun.com/repository/public true true @@ -53,20 +60,21 @@ jobs: EOF - - name: 主POM统一打包 + - name: 主POM统一打包所有模块 run: | - # 从根目录构建所有模块 + # 从根目录执行打包命令 mvn clean package -U -DskipTests -f pom.xml - # 查看构建产物 + # 验证打包结果 + echo "=== 构建产物列表 ===" find . -name "*.jar" -path "*/target/*" - # 阶段2:为每个服务构建并推送镜像 - build-images: + # 阶段2:为每个服务模块构建并推送Docker镜像 + build-and-push-images: needs: build-all runs-on: ubuntu strategy: - fail-fast: false + fail-fast: false # 单个服务失败不影响其他服务构建 matrix: service: - ruoyi-auth @@ -84,31 +92,28 @@ jobs: - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: - - name: 拉取代码 + - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置Docker构建环境 + - name: 配置Docker Buildx构建环境 uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: 登录容器仓库 + - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - - name: 构建并推送镜像 + - name: 构建并推送服务镜像 uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: . - file: ./${{ matrix.service }}/Dockerfile - tags: | + context: . # 构建上下文为项目根目录 + file: ./${{ matrix.service }}/Dockerfile # 指定模块的Dockerfile路径 + tags: # 镜像标签 ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:latest - push: true - cache-from: type=gha - cache-to: type=gha,mode=max - paths: - - ${{ matrix.service }}/**/* - - pom.xml + push: true # 推送镜像到仓库 + cache-from: type=gha # 使用GitHub Actions缓存 + cache-to: type=gha,mode=max # 最大化缓存内容 \ No newline at end of file From afc0e69319863b17f30a3786d6b79668429c7e45 Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:36:55 +0800 Subject: [PATCH 42/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 156 +++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 82 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 1ce12579..fb64956e 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,80 +1,13 @@ -run-name: ${{ gitea.actor }} 构建并推送服务镜像 🚀 +run-name: ${{ gitea.actor }} 打包并构建镜像 🚀 on: push: - branches: [master] + branches: + - master jobs: - # 阶段1:通过主POM统一构建所有模块 - build-all: - runs-on: ubuntu - steps: - - name: 拉取代码仓库 - uses: http://git.missmoc.top/mocheng/checkout@v4 - - - name: 配置JDK和Maven环境 - run: | - # 配置环境变量路径 - export JAVA_HOME="/java17/java17" - export MAVEN_HOME="/maven/apache-maven-3.9.11" - - # 验证环境是否存在 - [ -d "$JAVA_HOME" ] || { echo "错误:JDK目录不存在 - $JAVA_HOME"; exit 1; } - [ -d "$MAVEN_HOME" ] || { echo "错误:Maven目录不存在 - $MAVEN_HOME"; exit 1; } - - # 导出环境变量到工作流 - echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV - echo "$JAVA_HOME/bin" >> $GITHUB_PATH - echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV - echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - # 输出版本信息验证配置 - java -version - mvn -v - - - name: 配置Maven仓库(阿里云) - run: | - # 创建Maven配置目录 - mkdir -p ~/.m2 - - # 写入settings.xml配置 - cat > ~/.m2/settings.xml << 'EOF' - - - ${user.home}/.m2/repository - - - aliyun - - - aliyun-public - https://maven.aliyun.com/repository/public - true - true - - - - - - aliyun - - - EOF - - - name: 主POM统一打包所有模块 - run: | - # 从根目录执行打包命令 - mvn clean package -U -DskipTests -f pom.xml - - # 验证打包结果 - echo "=== 构建产物列表 ===" - find . -name "*.jar" -path "*/target/*" - - # 阶段2:为每个服务模块构建并推送Docker镜像 - build-and-push-images: - needs: build-all + build-and-push: runs-on: ubuntu strategy: - fail-fast: false # 单个服务失败不影响其他服务构建 matrix: service: - ruoyi-auth @@ -95,25 +28,84 @@ jobs: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - - name: 配置Docker Buildx构建环境 + - name: 配置环境变量 + run: | + # 配置JDK和Maven绝对路径 + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + + # 验证路径有效性 + if [ ! -f "$JAVA_HOME/bin/java" ]; then + echo "错误:JDK不存在于 $JAVA_HOME" + exit 1 + fi + if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then + echo "错误:Maven不存在于 $MAVEN_HOME" + exit 1 + fi + + # 配置环境变量 + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + # 验证版本 + java -version + mvn -v + + - name: 配置Maven仓库(仅华为镜像) + run: | + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml << EOF + + + $HOME/.m2/repository + + + huawei + https://mirrors.huaweicloud.com/repository/maven/ + * + + + + EOF + + - name: 执行mvn clean package打包 + run: | + SERVICE_NAME="${{ matrix.service }}" + POM_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" + + # 检查POM文件是否存在 + if [ ! -f "$POM_PATH" ]; then + echo "错误:$SERVICE_NAME 的POM文件不存在于 $POM_PATH" + exit 1 + fi + + # 直接执行打包命令 + mvn clean package -U -DskipTests -f "$POM_PATH" + + # 验证打包结果 + echo "=== 打包产物 ===" + ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/" + + - name: 配置Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: 登录到容器仓库 + - name: 登录容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - - name: 构建并推送服务镜像 + - name: 构建并推送Docker镜像 uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: . # 构建上下文为项目根目录 - file: ./${{ matrix.service }}/Dockerfile # 指定模块的Dockerfile路径 - tags: # 镜像标签 - ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} - ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:latest - push: true # 推送镜像到仓库 - cache-from: type=gha # 使用GitHub Actions缓存 - cache-to: type=gha,mode=max # 最大化缓存内容 + context: "${GITHUB_WORKSPACE}" + file: "${{ matrix.service }}/Dockerfile" + tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} + push: true + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file From edf514b25d98b4eede2bb0c27fe7e0d3222e8cef Mon Sep 17 00:00:00 2001 From: bichangxiong <3057647414@qq.com> Date: Thu, 14 Aug 2025 02:40:47 +0800 Subject: [PATCH 43/43] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/dev?= =?UTF-8?q?.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/dev.yml | 194 +++++++++++++++++++++++++++++---------- 1 file changed, 143 insertions(+), 51 deletions(-) diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index fb64956e..13c24388 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,11 +1,132 @@ -run-name: ${{ gitea.actor }} 打包并构建镜像 🚀 +run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: branches: - master jobs: - build-and-push: + build-parent-pom: + runs-on: ubuntu + steps: + - name: 拉取代码仓库 + uses: http://git.missmoc.top/mocheng/checkout@v4 + + - name: 配置环境变量(绝对路径) + run: | + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + + if [ ! -f "$JAVA_HOME/bin/java" ]; then + echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" + exit 1 + fi + if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then + echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" + exit 1 + fi + + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + "$JAVA_HOME/bin/java" -version + "$MAVEN_HOME/bin/mvn" -v + + - name: 配置Maven仓库 + run: | + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml << EOF + + + $HOME/.m2/repository + + + multi-repo + + + local-repo + file://$HOME/.m2/repository + + + aliyun-public + https://maven.aliyun.com/repository/public + + + + + + multi-repo + + + EOF + + - name: 构建主POM(仅本地安装,不上传) + run: | + MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" + if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then + echo "错误:主POM文件不存在" + exit 1 + fi + + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:主POM构建失败" + exit 1 + fi + sleep 10 + done + + build-common-modules: + needs: build-parent-pom + runs-on: ubuntu + steps: + - name: 拉取代码仓库 + uses: http://git.missmoc.top/mocheng/checkout@v4 + + - name: 配置环境变量 + run: | + export JAVA_HOME="/java17/java17" + export MAVEN_HOME="/maven/apache-maven-3.9.11" + echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV + echo "$JAVA_HOME/bin" >> $GITHUB_PATH + echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV + echo "$MAVEN_HOME/bin" >> $GITHUB_PATH + + - name: 构建通用模块(仅本地使用,不上传) + run: | + COMMON_MODULES=( + "ruoyi-common" + "ruoyi-api" + "ruoyi-common-bom" + "ruoyi-common-alibaba-bom" + "ruoyi-api-bom" + ) + + for module in "${COMMON_MODULES[@]}"; do + MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" + if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then + echo "警告:模块 $module 不存在,跳过" + continue + fi + + retries=3 + count=0 + until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do + count=$((count + 1)) + if [ $count -ge $retries ]; then + echo "错误:模块 $module 构建失败" + exit 1 + fi + sleep 10 + done + done + + build-and-push-services: + needs: build-common-modules runs-on: ubuntu strategy: matrix: @@ -30,80 +151,51 @@ jobs: - name: 配置环境变量 run: | - # 配置JDK和Maven绝对路径 export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" - - # 验证路径有效性 - if [ ! -f "$JAVA_HOME/bin/java" ]; then - echo "错误:JDK不存在于 $JAVA_HOME" - exit 1 - fi - if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then - echo "错误:Maven不存在于 $MAVEN_HOME" - exit 1 - fi - - # 配置环境变量 echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - - # 验证版本 - java -version - mvn -v - - name: 配置Maven仓库(仅华为镜像) - run: | - mkdir -p ~/.m2 - cat > ~/.m2/settings.xml << EOF - - - $HOME/.m2/repository - - - huawei - https://mirrors.huaweicloud.com/repository/maven/ - * - - - - EOF - - - name: 执行mvn clean package打包 + - name: 构建服务模块 run: | SERVICE_NAME="${{ matrix.service }}" - POM_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" - - # 检查POM文件是否存在 - if [ ! -f "$POM_PATH" ]; then - echo "错误:$SERVICE_NAME 的POM文件不存在于 $POM_PATH" + SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" + if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then + echo "错误:服务 $SERVICE_NAME 的POM文件不存在" exit 1 fi - # 直接执行打包命令 - mvn clean package -U -DskipTests -f "$POM_PATH" - - # 验证打包结果 - echo "=== 打包产物 ===" - ls -la "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/" + "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - name: 配置Docker Buildx uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 - - name: 登录容器仓库 + - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 with: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - - name: 构建并推送Docker镜像 + - name: 确定Dockerfile路径 + id: dockerfile-path + run: | + SERVICE_NAME="${{ matrix.service }}" + DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" + + if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then + echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT + else + echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT + fi + + - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: context: "${GITHUB_WORKSPACE}" - file: "${{ matrix.service }}/Dockerfile" + file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} push: true cache-from: type=gha