Release 10.0.0 #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: Optional release version guard without leading v; must match VERSION. | |
| required: false | |
| push: | |
| tags: | |
| - 'v*' | |
| permissions: | |
| contents: write | |
| jobs: | |
| version: | |
| runs-on: windows-latest | |
| outputs: | |
| version: ${{ steps.version.outputs.version }} | |
| tag: ${{ steps.version.outputs.tag }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Resolve version | |
| id: version | |
| shell: bash | |
| run: | | |
| canonical_version="$(tr -d '[:space:]' < VERSION)" | |
| requested_version="${{ github.event.inputs.version }}" | |
| if [ -z "$requested_version" ] && [ "${{ github.ref_type }}" = "tag" ]; then | |
| requested_version="${GITHUB_REF_NAME#v}" | |
| fi | |
| if [ -n "$requested_version" ] && [ "$requested_version" != "$canonical_version" ]; then | |
| echo "Release version '$requested_version' does not match VERSION '$canonical_version'. Update VERSION first." >&2 | |
| exit 1 | |
| fi | |
| echo "version=$canonical_version" >> "$GITHUB_OUTPUT" | |
| echo "tag=v$canonical_version" >> "$GITHUB_OUTPUT" | |
| build: | |
| needs: version | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| - name: Build, verify, and package | |
| shell: cmd | |
| run: gradlew.bat clean check corePerformance verifyPlugin buildPlugin "-PpluginVersion=${{ needs.version.outputs.version }}" -PverifyRecommendedIdes=false -PverifyAllJetBrainsIdes=false --no-daemon --console=plain --no-build-cache --rerun-tasks | |
| - name: Upload package artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: idea-plugin | |
| path: | | |
| build/distributions/MarkdownTableEditorIdea-${{ needs.version.outputs.version }}.zip | |
| build/release/MARKETPLACE_SUBMISSION.md | |
| if-no-files-found: error | |
| release: | |
| needs: | |
| - version | |
| - build | |
| runs-on: windows-latest | |
| steps: | |
| - name: Download package artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: release-assets | |
| - name: Publish GitHub release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| TAG_NAME: ${{ needs.version.outputs.tag }} | |
| VERSION: ${{ needs.version.outputs.version }} | |
| run: | | |
| mapfile -t files < <(find release-assets -type f -name '*.zip' | sort) | |
| if [ "${#files[@]}" -eq 0 ]; then | |
| echo "No release ZIP files were downloaded." >&2 | |
| exit 1 | |
| fi | |
| sha256sum "${files[@]}" > SHA256SUMS.txt | |
| marketplace_doc="$(find release-assets -type f -name 'MARKETPLACE_SUBMISSION.md' | sort | head -n 1)" | |
| cat > release-notes.md <<EOF | |
| ## Builds / Downloads | |
| - [MarkdownTableEditorIdea-$VERSION.zip](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MarkdownTableEditorIdea-$VERSION.zip) | |
| - [SHA256SUMS.txt](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/SHA256SUMS.txt) | |
| - [MARKETPLACE_SUBMISSION.md](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MARKETPLACE_SUBMISSION.md) | |
| ## What's Changed | |
| - Supersedes 9.0.0 as the current stable release. | |
| - Added localized action names, menu text, dialogs, and user messages for 20 popular locales. | |
| - Improved large-table performance by reducing table parsing, display-width, and formatting overhead. | |
| - Added release-blocking Java/C++ core performance benchmarks to CI. | |
| - Preserved Java/C++ core parity for trimmed pipe rows, escaped pipes, Unicode/CJK width, CSV/TSV conversion, sorting, and row/column edits. | |
| - Kept the non-conflicting Tab plus Ctrl+Alt+Shift shortcut scheme from 9.0.0. | |
| - Built the JetBrains IDE plugin package on GitHub Actions. | |
| - Included SHA-256 sums for release verification. | |
| ## Validation | |
| - GitHub Actions release build completed with smoke tests, coverage checks, baseline Plugin Verifier, and core performance benchmarks. | |
| EOF | |
| assets=("${files[@]}" SHA256SUMS.txt) | |
| if [ -n "$marketplace_doc" ]; then | |
| assets+=("$marketplace_doc") | |
| fi | |
| if gh release view "$TAG_NAME" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then | |
| gh release upload "$TAG_NAME" "${assets[@]}" --repo "$GITHUB_REPOSITORY" --clobber | |
| gh release edit "$TAG_NAME" --repo "$GITHUB_REPOSITORY" --title "Markdown Table Editor $VERSION" --notes-file release-notes.md --latest | |
| else | |
| gh release create "$TAG_NAME" "${assets[@]}" --repo "$GITHUB_REPOSITORY" --target "$GITHUB_SHA" --title "Markdown Table Editor $VERSION" --notes-file release-notes.md --latest | |
| fi |