首先让我解释一下我要做什么。我确实编写了一个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}"
不幸的是,这是结果,对我来说看起来不正确
我确实尝试通过以下测试来代替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添加文档
答案 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