name: Create Release on: pull_request: branches: [main] types: [closed] jobs: create-release: runs-on: ubuntu-24.04 if: | github.event.pull_request.merged == true && startsWith(github.event.pull_request.title, 'Release v') && github.repository_owner == 'wizarrrr' permissions: contents: write steps: - name: Checkout uses: actions/checkout@v7 with: token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }} fetch-depth: 0 - name: Extract version from PR title id: version run: | PR_TITLE="${{ github.event.pull_request.title }}" VERSION=$(echo "$PR_TITLE" | sed 's/Release v//') echo "version=$VERSION" >> $GITHUB_OUTPUT echo "tag=v$VERSION" >> $GITHUB_OUTPUT - name: Create GitHub Release id: create_release env: GITHUB_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }} run: | # Save PR body to file to avoid shell injection cat > pr_body.md << 'EOF' ${{ github.event.pull_request.body }} EOF # Extract changelog from PR body (remove the footer) sed '/^---$/,$d' pr_body.md > changelog.md # Create the release (explicitly published, not draft) echo "Creating published release ${{ steps.version.outputs.tag }}..." gh release create "${{ steps.version.outputs.tag }}" \ --title "${{ steps.version.outputs.tag }}" \ --notes-file changelog.md \ --latest # Verify the release was published (not draft) RELEASE_INFO=$(gh release view "${{ steps.version.outputs.tag }}" --json isDraft,url) IS_DRAFT=$(echo "$RELEASE_INFO" | jq -r '.isDraft') RELEASE_URL=$(echo "$RELEASE_INFO" | jq -r '.url') if [[ "$IS_DRAFT" == "true" ]]; then echo "❌ ERROR: Release was created as draft! This will not trigger wizarr-release workflow." exit 1 else echo "✅ Release successfully published and will trigger wizarr-release workflow" fi echo "html_url=$RELEASE_URL" >> $GITHUB_OUTPUT - name: Summary run: | echo "🎉 **Release Created & Published!**" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "- **Version**: ${{ steps.version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY echo "- **Release URL**: ${{ steps.create_release.outputs.html_url }}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "## What happens next:" >> $GITHUB_STEP_SUMMARY echo "1. ⚙️ **wizarr-release** workflow is now triggered (Docker build)" >> $GITHUB_STEP_SUMMARY echo "2. 📦 Docker images built for linux/amd64 and linux/arm64" >> $GITHUB_STEP_SUMMARY echo "3. 🏷️ Images tagged as \`:latest\` and \`:${{ steps.version.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY echo "4. 🚀 Images pushed to ghcr.io/${{ github.repository_owner }}/wizarr" >> $GITHUB_STEP_SUMMARY