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

在GitHub Actions中通过JavaScript创建环境变量的方法咨询

GitHub Actions中通过JavaScript创建并传递变量的方法

一、环境变量与仓库变量的区别

  • 仓库变量:存储在仓库的「Settings → Secrets and variables → Actions」中,是持久化的全局变量,所有工作流都可调用,能手动或通过API修改。
  • 环境变量:工作流运行时临时生成的变量,仅在当前工作流周期内有效,不会持久化到仓库,也不会在仓库设置中显示。

二、同Job内步骤间传递变量(推荐方案)

GitHub Actions目前推荐通过GITHUB_OUTPUT机制传递步骤间变量,替代已废弃的set-output写法,以下是两种实现方式:

方式1:使用官方@actions/core包(最简便)

先安装依赖:

npm install @actions/core

编写JavaScript脚本:

const core = require('@actions/core');

// 定义要传递的变量值
const myCustomValue = '这是自定义的变量内容';
// 设置输出变量
core.setOutput('TEST', myCustomValue);

在工作流中调用并使用变量:

- name: 运行JS脚本设置变量
  id: set-variable # 必须设置id,后续步骤通过此id获取输出
  run: node your-script-file.js

- name: 在后续步骤使用变量
  run: echo "获取到的变量值:${{ steps.set-variable.outputs.TEST }}"

方式2:不依赖官方包,直接写入GITHUB_OUTPUT文件

如果不想引入@actions/core,可以直接操作环境变量指定的输出文件:

const fs = require('fs');

const myCustomValue = '这是自定义的变量内容';
// 获取GitHub Actions指定的输出文件路径
const outputFilePath = process.env.GITHUB_OUTPUT;
// 将变量写入文件,格式为「变量名=值」,每行一个变量
fs.appendFileSync(outputFilePath, `TEST=${myCustomValue}\n`);

后续步骤调用方式和方式1完全一致,通过步骤id的outputs获取变量。

三、跨Job传递变量

跨Job传递需要先在源Job中暴露输出变量,再让目标Job通过needs依赖源Job来获取:

jobs:
  set-variable-job:
    runs-on: ubuntu-latest
    outputs:
      test-output: ${{ steps.set-var.outputs.TEST }} # 暴露当前Job的输出变量
    steps:
      - name: 运行JS脚本设置变量
        id: set-var
        run: node your-script-file.js

  use-variable-job:
    runs-on: ubuntu-latest
    needs: set-variable-job # 依赖源Job
    steps:
      - name: 使用跨Job传递的变量
        run: echo "从set-variable-job获取的变量值:${{ needs.set-variable-job.outputs.test-output }}"

四、你之前尝试方案的问题说明

你之前用console.log("TEST=VALUE")的写法属于已废弃的旧版set-output机制,GitHub Actions现在不再识别这种控制台输出为步骤变量,因此无法生效。必须使用上述写入GITHUB_OUTPUT的方式。

内容的提问来源于stack exchange,提问作者Bata Roland Krisztián

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:13:15