feat(ci):添加多仓库同步功能以及Draft Release支持

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>
This commit is contained in:
doudou0720
2026-02-13 00:44:09 +08:00
parent ed239929f3
commit 890f3e890c
+100 -4
View File
@@ -21,6 +21,11 @@ on:
required: true
default: true
type: boolean
draft:
description: 'Create as draft release'
required: true
default: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}-${{ github.sha }}
@@ -434,10 +439,12 @@ jobs:
release:
needs: [prepare, build, sign]
if: success()
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
contents: write
outputs:
enhanced_changelog: ${{steps.enhanced_changelog.outputs.enhanced_changelog}}
steps:
- name: Download Build Artifacts
uses: actions/download-artifact@v4
@@ -511,7 +518,7 @@ jobs:
name: ICC CE ${{ needs.prepare.outputs.version }}
body: |
${{ steps.enhanced_changelog.outputs.enhanced_changelog }}
draft: false
draft: ${{ github.event.inputs.draft || false }}
prerelease: ${{ needs.prepare.outputs.is_prerelease == 'true' }}
files: |
InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip
@@ -520,4 +527,93 @@ jobs:
InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.Setup.exe.sigstore.json
fail_on_unmatched_files: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
post_release:
needs: [prepare, release]
if: success()
runs-on: ubuntu-slim
permissions:
id-token: write
contents: write
steps:
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: build-files-${{ needs.prepare.outputs.version }}
- name: Get beta token
uses: octo-sts/action@main
id: octo-sts-beta
with:
scope: InkCanvasForClass/community-beta
identity: repo-sync
- name: Get download token
uses: octo-sts/action@main
id: octo-sts-downloads
with:
scope: InkCanvasForClass/downloads
identity: repo-sync
- name: Sync downloads repos
env:
GITHUB_TOKEN: ${{ steps.octo-sts-downloads.outputs.token }}
run: |
CONTENT=$(base64 -w0 InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip)
gh api \
--method PUT \
/repos/InkCanvasForClass/downloads/contents/${{ case(needs.prepare.outputs.is_prerelease == 'true', 'Beta', 'Release') }}/InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip \
-f message="Add files via upload" \
-f content="$CONTENT" \
-f branch="main"
- name: Update AutomaticUpdateVersionControl in beta repo
env:
GITHUB_TOKEN: ${{ steps.octo-sts-beta.outputs.token }}
run: |
CONTENT=$(echo -n "${{ needs.prepare.outputs.version }}" | base64 -w0)
SHA=$(gh api /repos/InkCanvasForClass/community-beta/contents/AutomaticUpdateVersionControl.txt --jq '.sha' 2>/dev/null || echo "")
gh api \
--method PUT \
/repos/InkCanvasForClass/community-beta/contents/AutomaticUpdateVersionControl.txt \
-f message="Update AutomaticUpdateVersionControl.txt" \
-f content="$CONTENT" \
-f branch="main" \
${SHA:+-f sha="$SHA"}
- name: Create GitHub Release on beta repo
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.prepare.outputs.tag_name }}
name: ICC CE ${{ needs.prepare.outputs.version }}
body: |
${{ needs.release.outputs.enhanced_changelog }}
draft: false
prerelease: ${{ needs.prepare.outputs.is_prerelease == 'true' }}
files: |
InkCanvasForClass.CE.${{ needs.prepare.outputs.version }}.zip
fail_on_unmatched_files: false
repository: "InkCanvasForClass/community-beta"
env:
GITHUB_TOKEN: ${{ steps.octo-sts-beta.outputs.token }}
- name: Update community repo AutomaticUpdateVersionControl
if: ${{needs.prepare.outputs.is_prerelease == 'false'}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
CONTENT=$(echo -n "${{ needs.prepare.outputs.version }}" | base64 -w0)
SHA=$(gh api /repos/InkCanvasForClass/community/contents/AutomaticUpdateVersionControl.txt --jq '.sha' 2>/dev/null || echo "")
gh api \
--method PUT \
/repos/InkCanvasForClass/community/contents/AutomaticUpdateVersionControl.txt \
-f message="Update AutomaticUpdateVersionControl.txt" \
-f content="$CONTENT" \
-f branch="main" \
${SHA:+-f sha="$SHA"}