diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index d47740e7..7551c165 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -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 }} \ No newline at end of file + 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"} \ No newline at end of file