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

如何在JavaScript Actions中根据执行状态执行不同Post操作?

在JavaScript Actions的Post脚本中获取主动作执行状态的方案

可以在post.js中获取主动作的执行状态,进而根据状态执行不同逻辑(比如发送不同的第三方通知),以下是两种可靠的实现方式:

方法一:使用官方@actions/core的状态存储(推荐)

GitHub Actions提供的@actions/core库专门支持主动作与post动作之间共享数据,通过saveState和getState方法实现状态传递:

  1. 在主脚本index.js中保存执行状态
    将主逻辑包裹在try-catch中,捕获执行结果并保存状态:
const core = require('@actions/core');

try {
  // 执行主动作核心逻辑
  console.log('运行主动作任务');
  
  // 执行成功时保存状态
  core.saveState('actionStatus', 'success');
} catch (error) {
  // 标记动作失败,并保存失败状态
  core.setFailed(error.message);
  core.saveState('actionStatus', 'failure');
}
  1. 在post脚本post.js中读取状态并分支处理
    读取保存的状态,根据结果执行不同的通知逻辑:
const core = require('@actions/core');

const actionStatus = core.getState('actionStatus');

if (actionStatus === 'success') {
  // 发送成功通知的逻辑
  console.log('向第三方服务发送执行成功通知');
} else if (actionStatus === 'failure') {
  // 发送失败通知的逻辑
  console.log('向第三方服务发送执行失败通知');
}

方法二:通过环境变量传递状态

也可以通过环境变量传递状态,主脚本将执行结果写入环境变量,post脚本读取该变量:

  1. 主脚本index.js中设置环境变量
const core = require('@actions/core');

try {
  // 主逻辑执行
  core.exportVariable('ACTION_EXEC_STATUS', 'success');
} catch (error) {
  core.setFailed(error.message);
  core.exportVariable('ACTION_EXEC_STATUS', 'failure');
}
  1. post脚本post.js中读取环境变量
const actionStatus = process.env.ACTION_EXEC_STATUS;

if (actionStatus === 'success') {
  // 成功通知逻辑
} else {
  // 失败通知逻辑
}

注意:相比环境变量,saveState是官方专门为动作内主/Post环节共享数据设计的方案,优先级更高,也更可靠(比如主脚本异常退出时,saveState仍能在try-catch的捕获流程中执行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:40:01