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

如何在自定义JavaScript GitHub Action中调用其他Action?

在JavaScript GitHub Action中调用actions/checkout@v3的方法

直接在JavaScript代码里调用另一个GitHub Action,核心是通过官方提供的Actions工具库复用checkout的逻辑,或者执行其入口脚本,以下是两种可行方案:

方案1:复用官方封装的checkout核心逻辑

官方提供了@actions/checkout npm包,直接对应actions/checkout的核心功能,无需手动处理克隆仓库和版本切换,是最简洁的方式:

  1. 先安装依赖:
npm install @actions/core @actions/checkout
  1. 在你的JavaScript代码中调用:
const core = require('@actions/core');
const checkout = require('@actions/checkout');

async function run() {
  try {
    // 传入对应参数,和YAML中使用checkout时的输入字段一致
    await checkout({
      repository: core.getInput('repository'), // 可选,默认当前仓库
      ref: core.getInput('ref'), // 可选,指定分支、tag或commit
      token: core.getInput('token'), // 需权限时传入GITHUB_TOKEN
      path: core.getInput('path') // 可选,拉取到指定目录
    });
  } catch (error) {
    core.setFailed(error.message);
  }
}

run();

方案2:直接执行checkout Action的入口脚本

如果不想依赖npm包,可以手动克隆checkout仓库并执行其编译后的脚本:

  1. 安装依赖:
npm install @actions/core @actions/exec
  1. 在JavaScript代码中添加逻辑:
const { exec } = require('@actions/exec');
const core = require('@actions/core');

async function run() {
  try {
    // 克隆checkout仓库到临时目录
    await exec('git', ['clone', 'https://github.com/actions/checkout.git', './temp-checkout']);
    // 切换到v3版本
    await exec('git', ['checkout', 'v3'], { cwd: './temp-checkout' });
    // 执行checkout的入口脚本
    await exec('node', ['./temp-checkout/dist/index.js']);
  } catch (error) {
    core.setFailed(error.message);
  }
}

run();

注意:无论哪种方式,都要确保你的Action拥有足够的仓库访问权限,比如在工作流中设置permissions: contents: read,并正确传入GITHUB_TOKEN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:12:00