GitHub Actions 发布标签

14
在 GitHub 中创建一个发布时,我触发了一个 GitHub action。在这个 action 中,我想从发布中获取一些数据,这可行吗?例如,我想获取标签,然后将其用作 NuGet 包的版本号。是否有办法从任务中获取这些数据?
3个回答

7

您可以使用 ${{ github.ref }}${{ github.event.release.tag_name }}

示例:

name: Release

on:
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - name: Download artifact
        uses: actions/download-artifact@v2
        with:
          name: NameOfYourArtifact
      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          body: TODO
          draft: true
          prerelease: false

      - name: Upload Release Asset
        id: upload-release-asset 
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps 
          asset_path: NameOfYourArtifact.exe
          asset_name: NameOfYourArtifact.exe
          asset_content_type: application/octet-stream

这个动作会在创建一个类似于v*的名称的新标签时执行。
触发此操作:
git push origin v1.0.0

2
非常好的例子,谢谢。在我的情况下,我看到github.ref返回'refs/tags/1.9.9',那么我是否需要应用正则表达式来删除'ref/tags'部分? - NS31
1
这要看情况,如果你在 release_name 中使用它,那么 refs/tags 会自动被修剪,如果你想在自定义步骤中使用它,你可能需要用正则表达式提取它。 - Preben Huybrechts
1
啊,它在 ${{ github.event.release.tag_name }} 中。 - NS31

6

0

github.ref_name 返回我的操作中的分支名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接