Mr *_*rth 17 powershell github github-actions
我之前一直使用 set-output 来设置值,但现在我们收到“已弃用的功能”消息,并且我按照规定使用 $GITHUB_OUTPUT 。
我替换了所有实例
run: echo ::set-output name=Key::Value
Run Code Online (Sandbox Code Playgroud)
和
run: "Key=Value" >> $GITHUB_OUTPUT
Run Code Online (Sandbox Code Playgroud)
但密钥似乎没有设置。
我的运行器运行在 Windows 版本 2.299.1 上,工作流程使用 CMD。所有对 set-output 的调用都有效,而所有使用 $GITHUB_OUTPUT 的调用都无效。
简化的操作代码
defaults:
run:
shell: cmd
jobs:
EnvSetup:
name: Publish Base Environment Vars
runs-on: [self-hosted, Windows, myLabel]
outputs:
var_Project: ${{ steps.set-Project.outputs.Project }}
var_Val1: ${{ steps.set-Val1.outputs.Val1 }}
var_Val2: ${{ steps.set-Val2.outputs.Val2 }}
steps:
- name: Project
id: set-Project
run: echo ::set-output name=Project::Larry
- name: Val1
id: set-Val1
run: echo "Val1=Curly" >> $GITHUB_OUTPUT
- name: Val2
id: set-Val2
run: echo "Val2=Moe" >> $GITHUB_OUTPUT
...
Testing:
name: ShowStuff
runs-on: [self-hosted, Windows, myLabel]
needs: [EnvSetup]
env:
MyProject: ${{ needs.EnvSetup.outputs.var_Project }}_ABC
steps:
- name: Print environment variables
run: |
echo "Project: ${{ needs.EnvSetup.outputs.var_Project }}" ^
echo "MyProject: ${{ env.MyProject }}" ^
echo "Val1: ${{ needs.EnvSetup.outputs.var_Val1 }}" ^
echo "Val2: ${{ needs.EnvSetup.outputs.var_Val2 }}"
Run Code Online (Sandbox Code Playgroud)
输出:
echo "Project: Larry"
echo "MyProject: Larry_ABC"
echo "Val1: "
echo "Val2: "
Run Code Online (Sandbox Code Playgroud)
从我所看到的一切来看,引用值的方式没有改变,只是集合改变了。
有没有其他人尝试过使用CMD?如果有必要,我会使用 PowerShell,但如果我可以避免的话,这并不是一个小变化。
jes*_*ing 30
官方文档已更新,但您需要切换到页面顶部的“PowerShell”才能查看 PowerShell 语法中的所有示例:
如果您正在寻找Windows Shell 语法来发出 GitHub Actions 命令,我已经撰写了一篇博客来介绍该语法。
Windows 默认使用 PowerShell Core 运行脚本任务,而不是 bash。因此,您需要使用 PowerShell 语法,或shell: bash在脚本操作上设置属性。
- name: Val2
id: set-Val2
run: echo "Val2=Moe" >> $GITHUB_OUTPUT
shell: bash
Run Code Online (Sandbox Code Playgroud)
在 PowerShell 中使用这些命令时,请确保重定向到$env:GITHUB_OUTPUT:
- name: Val2
id: set-Val2
run: echo "Val2=Moe" >> $env:GITHUB_OUTPUT
shell: pwsh
Run Code Online (Sandbox Code Playgroud)
我还在shell: pwsh上面明确添加了,因为需要告诉“旧 PowerShell”写入 UTF-8:
- shell: powershell
run: |
"mypath" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
Run Code Online (Sandbox Code Playgroud)
使用时,shell: cmd您需要使用%GITHUB_OUTPUT%,并将代码页更改为 Unicode:
@chcp 65001>nul
echo Val2=Moe >> %GITHUB_OUTPUT%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10901 次 |
| 最近记录: |