如何在 Windows Server 上的 GitHub 操作中设置环境变量?

Sim*_*rle 3 github-actions

首先让我解释一下我想要做什么。我确实编写了 ac# .net 应用程序,如果标签被推送到主分支,我想构建它。这个构建应该创建一个名为 like 的版本Release {Tag}。该版本应该获得由 Windows Server 构建的所有工件。现在我只有在没有东西的情况下才能获得标签。

我确实在这里找到了一个关于如何设置环境变量的问题,但这似乎只适用于这样的 linux。我确实尝试在官方文档中查找信息,但没有使其进入工作状态。目前我正在使用以下代码尝试从提交中获取标签。

name: Live build

on: [push]
  #push:
  #  tags:
  #   - '*'

jobs:
   build:
     name: Create build artifact
     runs-on: windows-latest
     steps:
       - name: Clone repository
         uses: actions/checkout@v2
         with: 
           ref: develop
       - name: Get current tag
         run: echo '::set-env name=tag::${(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")}'
       - name: Show current tag
         run: echo "${env.tag}"
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是结果,在我看来并不正确

1

我确实尝试echo '::set-env name=tag::${(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")}'用以下测试替换这部分调用

  • echo '::set-env name=tag::(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")'
  • echo '::set-env name=tag::$(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")'
  • echo ::set-env name=tag::$(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")
  • echo ::set-env name=tag::(("${env:GITHUB_REF}" -split "/")[-1] -replace " ","")

目前还没有任何工作......在此设置中,默认 shell 设置为 powershell。

编辑:从 GitHub 添加文档

Sal*_*Sal 8

随着 Github 的最新更改,该set-env命令已被弃用。新推荐的方法是将 UTF-8 编码的文本附加到 Github 环境文件中。

这就是我在 Windows PowerShell 中获取当前分支名称的方法:

- run: |
   chcp 65001 #set code page to utf-8
   echo ("BRANCH_NAME=" + $env:GITHUB_REF.replace('refs/heads/', '')) >> $env:GITHUB_ENV

- run: echo "${{ env.BRANCH_NAME }}"
- run: echo $env:BRANCH_NAME
Run Code Online (Sandbox Code Playgroud)

  • 这里的关键是在 Windows 上使用 `$env:GITHUB_ENV`。遗憾的是,Github Actions 文档中没有提到这一点。 (12认同)