如何以及为什么升级GitHub工作流程以使用“环境文件”

问题描述

我有一个运行良好的GitHub动作工作流文件,但最近引起人们注意的有关“ set-env”和“ add-path”弃用的警告。 GitHub建议的修复方法是使用“环境文件”;即将值通过管道传递到由GITHUB_ENV文件描述符管理的文件中。

我的问题是:GitHub是否要求我用包含“ echo“ {name} = {value}” >> $ GITHUB_ENV'形式的命令的步骤替换工作流程中的“ env”块?

我还必须问为什么这是必要的,因为我认为这很la脚,但这确实不重要。

解决方法

根据我在GitHub动作中使用python的经验,这是action / setup-python 1.1.1及更早版本的问题。您的工作流程中可能会有一行显示为:

uses: actions/[email protected]

如果升级到setup-python的版本2,将不会发出警告。只需将上面的行更改为以下内容:

uses: actions/setup-python@v2

为了演示,我的v1.1.1 workflow的日志显示了您提到的警告,但是使用version 2可以解决这些警告

,

我还必须问为什么这是必须的

这是announced in early Oct. 2020 this month,并指向moderate security vulnerability

@actions/core npm模块addPathexportVariable函数通过生成特定格式的字符串,通过stdout与Actions Runner进行通信。
将不受信任的数据记录到stdout的工作流可能会调用这些命令,从而导致路径或环境变量被修改而没有工作流或操作作者的意图。

目前,用户应升级到@ actions / core v1.2.6或更高版本,并用新的Environment File Syntax替换其工作流中的set-env或add-path命令的任何实例。
使用旧命令或旧版本工具包的工作流程和操作将开始发出警告,然后在工作流程执行过程中出错。

所以:

echo "FOO=BAR" >> $GITHUB_ENV
echo "/Users/test/.nvm/versions/node/v12.18.3/bin" >> $GITHUB_PATH

这就是为什么像actions/setup-python这样的GitHub Action具有最近的PR 138以便使用Environment files与Runner通信的原因。

但是,如果您使用的是基于actions/core的其他工作流程,则需要尽快升级上述actions/core的版本。