【问题标题】:How do I set an enviroment variable in GitHub action on a Windows Server?如何在 Windows Server 上的 GitHub 操作中设置环境变量?
【发布时间】:2020-09-03 14:09:47
【问题描述】:

首先让我解释一下我想要做什么。如果标签被推送到主分支,我确实编写了一个我想要构建的 c# .net 应用程序。此构建应创建一个名为 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}"

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

我确实尝试用以下测试替换这部分 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 添加文档

【问题讨论】:

    标签: github-actions


    【解决方案1】:

    随着对 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
    

    【讨论】:

    • 这里的关键是在 Windows 上使用$env:GITHUB_ENV。遗憾的是,Github Actions 文档中没有提到这一点。
    【解决方案2】:

    此答案中描述的方法现已弃用。请使用其他answer


    使用这个:

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

    要获取变量,您只需像访问环境变量一样访问它:

    run: echo "${env:tag}"
    

    【讨论】:

    • set-env 由于安全问题已于 2020 年 11 月 19 日被删除:github.blog/changelog/… 请参阅 Sai 对新推荐方式的回答。
    猜你喜欢
    • 2021-01-07
    • 2022-01-04
    • 2021-06-18
    • 2017-08-02
    • 1970-01-01
    • 2022-11-10
    • 2022-01-19
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多