Github操作:多个作业单个发布



我在Github runner中有两个工作。第一个工作构建android apk。第二个是构建zip文件。我希望apk和zip文件都在同一版本中。但是在apk发布到发行版之后,zip文件就不会发布到发行版本中。显示的错误为:
Validation Failed {"resource":"Release","code":"already_exists","field":"tag_name"}
buid.yml:

name: Build Process
on:
push:
tags:
- v*
jobs:
Build_Android:
if: "!contains(github.event.head_commit.message, 'skip-android')"
name: Build APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: "zulu"
java-version: "12.x"
- name: Setup Flutter
uses: subosito/flutter-action@v1
with:
channel: "stable"
- name: Get Packages
run: flutter pub get
- name: Build APK
run: flutter build apk --split-per-abi --release
- name: Create Github Release
uses: ncipollo/release-action@v1
with:
artifacts: "build/app/outputs/flutter-apk/*.apk"
replacesArtifacts: false
token: ${{ secrets.TOKEN }}
Build_Windows:
if: "!contains(github.event.head_commit.message, 'skip-windows')"
name: Building zip
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: "zulu"
java-version: "12.x"
- name: Setup Flutter
uses: subosito/flutter-action@v1
with:
channel: "stable"
- name: Get Packages
run: flutter pub get
- name: Enable windows build
run: flutter config --enable-windows-desktop
- name: Build Artifacts
run: flutter build windows --release
- name: Archive Artifacts
uses: thedoctor0/zip-release@master
with:
type: "zip"
filename: AppName-${{github.ref_name}}-windows.zip
directory: build/windows/runner/Release
- name: Create Github Release
uses: ncipollo/release-action@v1
with:
artifacts: "build/windows/runner/Release/AppName-${{github.ref_name}}-windows.zip"
replacesArtifacts: false
token: ${{ secrets.TOKEN }}

非常感谢您的帮助
谢谢!

错误显示:

Release with this tag name already exists

它来自你的最后一步:

ncipollo/release-action@v1

默认情况下,此操作似乎总是试图创建一个新版本("此操作将创建一个GitHub版本"(,但根据此处的文档,您可以通过添加以下内容来改变这种行为:

allowUpdates = "true"

- name: Create Github Release
uses: ncipollo/release-action@v1
with:
artifacts: "build/windows/runner/Release/AppName-${{github.ref_name}}-windows.zip"
replacesArtifacts: false
token: ${{ secrets.TOKEN }}
allowUpdates: true

当我想在同一版本中发布windows和linux二进制文件时,我遇到了类似的情况。最后我得出的结论是,我应该通过组织就业流动来解决这个问题。我更改了yml文件,这样

  • 我为每个部署都有一个单独的作业,只生成它自己的工件(例如Windows_Publish和Linux_Publish作业(
  • 这些作业中的每一个都会保存其生成的工件。但所有的作业都使用相同的名称和路径,所以所有工件都会累积在一个地方
  • 我有第三个作业(比如Deploy_Artifacts作业(,它可以恢复所有这些工件,并简单地一次性部署它们
  • 请注意,Deploy_Artifacts作业必须同时依赖于Windows_Publish和Linux_Publish作业。(需要:[Deploy_Artifacts,Windows_Publish](

我使用了操作/upload-artifact@master用于持久性和恢复工件[参见]和ncipollo/release-action@v1用于发送要发布的工件。这就是我最终想到的yml文件。

最新更新