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

时间:2020-05-17 20:31:49

标签: github-actions

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

我确实找到了一个有关如何设置环境变量here的问题,但这似乎仅在Linux上有效。我确实尝试在官方documentation中找到该信息,但是我没有使其处于工作状态。目前,我正在使用以下代码尝试从提交中获取标签。

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}"

不幸的是,这是结果,对我来说看起来不正确

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 " ","")

什么都没做...在此设置中,默认外壳程序设置为powershell。

编辑:从GitHub添加文档

2 个答案:

答案 0 :(得分:1)

使用此:

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

要获取变量,只需将其视为环境变量即可访问:

run: echo "${env:tag}"

答案 1 :(得分:0)

随着对Github的最新更改,不推荐使用set-env命令。新的recommended方法是将以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