Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,36 @@ jobs:

- name: Generate release checksums
shell: bash
env:
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

timestamp="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
sbom_file="release-assets/MarkdownTableEditorIdea-$VERSION-sbom.cdx.json"
cat > "$sbom_file" <<EOF
{
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"version": 1,
"metadata": {
"timestamp": "$timestamp",
"component": {
"type": "application",
"name": "IdeaMarkdownTableEditor",
"version": "$VERSION",
"purl": "pkg:github/krotname/IdeaMarkdownTableEditor@v$VERSION"
}
}
}
EOF

marketplace_doc="$(find release-assets -type f -name 'MARKETPLACE_SUBMISSION.md' | sort | head -n 1)"
checksum_files=("${files[@]}")
checksum_files=("${files[@]}" "$sbom_file")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Write checksums for published asset names

For users who download the GitHub release assets into a normal directory and follow the newly documented sha256sum -c SHA256SUMS.txt, this adds the SBOM to the checksum file under its runner path (release-assets/MarkdownTableEditorIdea-...-sbom.cdx.json), while gh release upload publishes it as just the basename. sha256sum --help confirms --check reads the filenames from the checksum file, so the SBOM verification entry will fail unless the user recreates the CI directory layout; write checksums from the asset upload directory or strip the release-assets/ prefix before publishing.

Useful? React with 👍 / 👎.

if [ -n "$marketplace_doc" ]; then
checksum_files+=("$marketplace_doc")
fi
Expand All @@ -107,6 +128,11 @@ jobs:
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4
with:
subject-checksums: SHA256SUMS.txt
- name: Generate release SBOM attestation
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4
with:
subject-path: release-assets/**/*.zip
sbom-path: release-assets/*-sbom.cdx.json

- name: Publish GitHub release
shell: bash
Expand All @@ -115,7 +141,7 @@ jobs:
TAG_NAME: ${{ needs.version.outputs.tag }}
VERSION: ${{ needs.version.outputs.version }}
run: |
mapfile -t files < <(find release-assets -type f -name '*.zip' | sort)
mapfile -t files < <(find release-assets -type f \( -name '*.zip' -o -name '*-sbom.cdx.json' \) | sort)
if [ "${#files[@]}" -eq 0 ]; then
echo "No release ZIP files were downloaded." >&2
exit 1
Expand All @@ -126,14 +152,15 @@ jobs:
## Builds / Downloads

- [MarkdownTableEditorIdea-$VERSION.zip](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MarkdownTableEditorIdea-$VERSION.zip)
- [MarkdownTableEditorIdea-$VERSION-sbom.cdx.json](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MarkdownTableEditorIdea-$VERSION-sbom.cdx.json)
- [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

- Hardened GitHub Actions permissions, dependency review, CodeQL, Scorecard, and release checks after repository audit.
- Refreshed the Gradle wrapper and build baseline used for the JetBrains IDE plugin package.
- Rebuilt the plugin ZIP with SHA-256 sums and provenance-ready release assets.
- Rebuilt the plugin ZIP with SHA-256 sums, SBOM, and GitHub attestations.

## Validation

Expand Down
10 changes: 10 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ The GIF is built from real JetBrains IDE screenshots on Windows: a regular `.md`

The plugin is packaged as a dynamic plugin and is designed to install without restarting compatible JetBrains IDEs. If the IDE asks for a restart, the platform has detected a loading or unloading limitation in the current session.

## Release Verification

Each GitHub release publishes the plugin ZIP, `MARKETPLACE_SUBMISSION.md`,
`SHA256SUMS.txt`, CycloneDX SBOM, and GitHub attestations.

```bash
sha256sum -c SHA256SUMS.txt
gh attestation verify MarkdownTableEditorIdea-*.zip --repo krotname/IdeaMarkdownTableEditor
```

## Compatibility

The plugin is built with Java 17 bytecode and declares compatibility with IntelliJ Platform `223+` without an `until-build` upper bound.
Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ GIF собран из реальных скриншотов IDE JetBrains под

Плагин собран как dynamic plugin и рассчитан на установку без перезапуска IDE в совместимых версиях продуктов JetBrains. Если сама IDE попросит перезапуск, значит платформа обнаружила ограничение загрузки или выгрузки в текущей сессии.

## Проверка Релиза

Каждый GitHub release публикует plugin ZIP, `MARKETPLACE_SUBMISSION.md`,
`SHA256SUMS.txt`, CycloneDX SBOM и GitHub attestations.

```bash
sha256sum -c SHA256SUMS.txt
gh attestation verify MarkdownTableEditorIdea-*.zip --repo krotname/IdeaMarkdownTableEditor
```

## Совместимость

Плагин собран в bytecode Java 17 и заявляет совместимость с IntelliJ Platform `223+` без верхней границы `until-build`.
Expand Down
6 changes: 6 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,9 @@ Include:
- suggested mitigation if available.

The maintainer aims to acknowledge valid reports within 48 hours and provide a remediation timeline after the impact is confirmed.

## Supply-chain controls

- Release packages include the plugin ZIP, `MARKETPLACE_SUBMISSION.md`, `SHA256SUMS.txt`, CycloneDX SBOM, and GitHub attestations.
- GitHub Actions are pinned by immutable commit SHA.
- Dependency Review, CodeQL, Scorecard, and actionlint run as repository quality gates.
Loading