From baa445b43587b589edc8b3b5eedf084f0e12c184 Mon Sep 17 00:00:00 2001 From: Anthony Correa Date: Sun, 26 Apr 2026 10:13:30 -0500 Subject: [PATCH] fixes for update of releases --- .github/workflows/release.yml | 73 ++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dd50ae7..5e6e9f8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ permissions: env: MKDOCS_CONFIG: mkdocs/mkdocs.yml MKDOCS_STRICT: ${{ vars.MKDOCS_STRICT || 'true' }} - SKIP_DOCX: f${{ vars.SKIP_DOCX || 'false' }}e + SKIP_DOCX: ${{ vars.SKIP_DOCX || 'false' }} jobs: publish: @@ -131,26 +131,63 @@ jobs: - name: Publish prerelease if: startsWith(github.ref_name, 'rc') || startsWith(github.ref_name, 'draft') - uses: softprops/action-gh-release@v2 - with: - prerelease: true - name: ${{ github.ref_name }} - tag_name: ${{ github.ref_name }} - body_path: ${{ runner.temp }}/release-notes.md - overwrite_file: true - files: | - ${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip - ${{ runner.temp }}/pandoc/${{ github.ref_name }}-${{ env.SHORT_SHA }}.docx + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + + TAG="${GITHUB_REF_NAME}" + ZIP_PATH="${RUNNER_TEMP}/mkdocs_out/site_offline/${TAG}.zip" + DOCX_PATH="${RUNNER_TEMP}/pandoc/${TAG}-${SHORT_SHA}.docx" + + ASSETS=("${ZIP_PATH}") + if [ "${SKIP_DOCX}" != "true" ] && [ -f "${DOCX_PATH}" ]; then + mapfile -t OLD_DOCX_ASSETS < <( + gh release view "${TAG}" --json assets --jq '.assets[].name' 2>/dev/null \ + | grep -E "^${TAG}-[0-9a-f]{7}[.]docx$" || true + ) + for ASSET in "${OLD_DOCX_ASSETS[@]}"; do + gh release delete-asset "${TAG}" "${ASSET}" --yes + done + + ASSETS+=("${DOCX_PATH}") + fi + + if gh release view "${TAG}" >/dev/null 2>&1; then + gh release edit "${TAG}" \ + --title "${TAG}" \ + --notes-file "${RUNNER_TEMP}/release-notes.md" \ + --prerelease + else + gh release create "${TAG}" \ + --title "${TAG}" \ + --notes-file "${RUNNER_TEMP}/release-notes.md" \ + --prerelease + fi + + gh release upload "${TAG}" "${ASSETS[@]}" --clobber - name: Publish release if: startsWith(github.ref_name, 'v') - uses: softprops/action-gh-release@v2 - with: - name: ${{ github.ref_name }} - tag_name: ${{ github.ref_name }} - body_path: ${{ runner.temp }}/release-notes.md - files: | - ${{ runner.temp }}/mkdocs_out/site_offline/${{ github.ref_name }}.zip + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + + TAG="${GITHUB_REF_NAME}" + ZIP_PATH="${RUNNER_TEMP}/mkdocs_out/site_offline/${TAG}.zip" + + if gh release view "${TAG}" >/dev/null 2>&1; then + gh release edit "${TAG}" \ + --title "${TAG}" \ + --notes-file "${RUNNER_TEMP}/release-notes.md" + else + gh release create "${TAG}" \ + --title "${TAG}" \ + --notes-file "${RUNNER_TEMP}/release-notes.md" + fi + + gh release upload "${TAG}" "${ZIP_PATH}" --clobber - name: Checkout gh-pages branch uses: actions/checkout@v4