Github 操作如何从变量中删除起始“v”

Tia*_*ção 10 github-actions

我有一个在发布事件上发布 nuget 包的工作流程,但我无法从标记名中删除“v”字符。我所有的标签名称都是 v${version} 所以我需要删除该“v”并仅获取版本。

我的工作流程是这样的:

name: Nuget package publish

on:
  release:
    types: [published]

jobs:

  nuget:
    name: Nuget - Publish package
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Verify commit exists in origin/master
        run: |
          git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/*
          git branch --remote --contains | grep origin/master
      - name: Set VERSION variable from tag
        run: | 
          echo "VERSION=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
          echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
      - name: Build
        run: dotnet build --configuration Release
      - name: Pack
        run: dotnet pack UVtools.Core --configuration Release --no-build --output .
      - name: Push nuget.org
        run: dotnet nuget push UVtools.Core.${VERSION}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${NUGET_TOKEN}
    env:
      NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

问题在:

运行 echo "VERSION=v3.2.0" >> $GITHUB_ENV
echo "VERSION=v3.2.0" >> $GITHUB_ENV
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
shell: /usr/bin/bash -e {0}

在我尝试剥离“v”版本时,它被设置为空

错误:文件不存在(UVtools.Core..nupkg)。

我如何从变量中删除“v”?

PS:在我的机器上的 bash 脚本下测试:

VERSION=v1.5.0
echo $VERSION
echo "${VERSION:1}"
Run Code Online (Sandbox Code Playgroud)

其产生:

v1.5.0
1.5.0

Eli*_*ira 8

@timmeinerzhagen 的答案有效,但为了确保仅删除可能的“v”前缀,您可以使用:

TAG=${{ github.event.release.tag_name }}
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)


Mar*_*son 6

我只是想跟进一个更简单且可在 2022 年运行的版本。

# Store the version, stripping any v-prefix
- name: Write release version
  run: |
    VERSION=${GITHUB_REF_NAME#v}
    echo Version: $VERSION
    echo "VERSION=$VERSION" >> $GITHUB_ENV

# Use version in other step
- name: Read version
  run: echo Version now: ${VERSION}
Run Code Online (Sandbox Code Playgroud)

GITHUB_REF_NAME包含标签的名称。当你的on-part 看起来像这样时:

on:
  push:
    tags:
      - 'v[0-9]+.[0-9]+.[0-9]+'
Run Code Online (Sandbox Code Playgroud)


tim*_*gen 5

您不需要将初始版本字符串导出到环境中。看来第二个调用无法在您的示例中正确找到它。

这在 GitHub Actions 中运行得很好:

VERSION=${{ github.event.release.tag_name }}
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)