You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Forge scheduledTrigger实现每周自动发送Jira工作日志?

配置Forge定时触发器(scheduledTrigger)实现每周一自动推送Jira工作日志

1. 前置检查

  • 确认你的Forge应用已在manifest.yml中声明必要权限,包括Jira数据读取权限和外部请求权限
  • 复用你已有的Jira工作日志获取逻辑,无需重新开发数据查询部分

2. 修改manifest.yml添加定时触发器配置

在应用根目录的manifest.yml中,新增scheduledTrigger模块,绑定处理函数并设置每周执行的Cron规则:

modules:
  # 新增定时触发器配置
  scheduledTrigger:
    - key: weekly-timesheet-sync
      function: sync-timesheet-to-server
      # Cron表达式:UTC时间每周一9点执行(若需北京时间,需换算为UTC周一1点,即修改为0 0 1 ? * MON *)
      schedule: "0 0 9 ? * MON *"
      description: "每周一自动拉取Jira工作日志并推送到Node.js服务器"
  # 你的现有函数模块
  function:
    - key: sync-timesheet-to-server
      handler: index.run
permissions:
  scopes:
    - read:jira-work # 读取Jira工作日志必需权限
  external:
    fetch:
      backend:
        - 'https://你的Node.js服务器域名或IP' # 允许Forge向你的服务器发起请求

3. 编写定时任务处理函数

在src/index.js中实现定时触发的核心逻辑,复用已有数据获取代码,新增推送至Node.js服务器的逻辑:

import api from '@forge/api';
import fetch from '@forge/fetch';

export async function run() {
  try {
    // 1. 复用你已有的Jira工作日志获取逻辑
    const timesheetData = await fetchJiraTimesheets();
    
    // 2. 推送数据到Node.js服务器
    const pushResponse = await fetch('https://你的Node.js服务器地址/api/receive-timesheet', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-Auth-Token': '你的服务器鉴权密钥' // 若服务器需要鉴权,添加对应头部
      },
      body: JSON.stringify(timesheetData)
    });

    if (!pushResponse.ok) {
      throw new Error(`推送失败:${pushResponse.status} ${pushResponse.statusText}`);
    }

    console.log('工作日志已成功推送至服务器');
    return { success: true };
  } catch (error) {
    console.error('定时任务执行异常:', error);
    throw error;
  }
}

// 复用你已有的Jira工作日志查询函数
async function fetchJiraTimesheets() {
  // 示例:调用Jira Worklog API获取数据,可根据你的需求调整参数
  const response = await api.asUser().requestJira('/rest/api/3/worklog/search', {
    method: 'GET',
    params: {
      startAt: 0,
      maxResults: 100,
      // 动态计算上周时间范围,替换为你需要的时间逻辑
      updatedAfter: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
    }
  });

  return await response.json();
}

4. 部署与验证

  • 执行forge deploy部署更新后的应用
  • 执行forge trigger create weekly-timesheet-sync创建并启用触发器(也可在Forge控制台手动启用)
  • 测试阶段可临时修改Cron表达式为0 */5 * ? * * *(每5分钟执行一次),验证数据是否正常推送,测试完成后改回每周一的规则
  • 通过forge logs查看定时任务的执行日志,排查可能出现的错误

关键注意事项

  • 时区换算:Forge定时任务默认使用UTC时区,需将你的目标本地时间转换为UTC时间后配置Cron表达式
  • 外部请求权限:必须在manifest.yml的external.fetch.backend中添加你的服务器地址,否则Forge应用无法发起跨域请求
  • 错误处理:务必添加日志输出和异常捕获,便于排查定时任务执行失败的问题

内容的提问来源于stack exchange,提问作者Sarra Mehrez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:02:18