Skip to content

perf: optimize release workflow with caching, parallelization, and cleanup#1

Open
devin-ai-integration[bot] wants to merge 2 commits into
masterfrom
devin/1776249574-optimize-release-workflow
Open

perf: optimize release workflow with caching, parallelization, and cleanup#1
devin-ai-integration[bot] wants to merge 2 commits into
masterfrom
devin/1776249574-optimize-release-workflow

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Apr 15, 2026

Copy link
Copy Markdown

Summary

Restructures the release.yml workflow from a single monolithic job into three parallel/pipelined jobs to reduce wall-clock time:

Job Purpose Runs in parallel with
build Compile JAR, verify, upload artifact changelog
changelog Full-depth checkout + generate release notes build
release Download artifacts, create GitHub Release waits for both

Additional speed improvements:

  • Caching: Added cache: 'gradle' to setup-java and upgraded to gradle/actions/setup-gradle@v4 (replaces deprecated gradle-build-action@v2)
  • Gradle flags: Removed redundant clean (CI workspace is fresh), added --build-cache and --parallel
  • Checkout: Build job uses shallow checkout (fetch-depth: 1); only changelog needs full history
  • Cleanup: Removed dead runner.os != 'Windows' guard, macOS stat fallback, verbose echo headers in verify step, and unused changelog job output

Review & Testing Checklist for Human

  • Artifact path structure in release job: upload-artifact@v4 with a multi-path path: block uploads build/libs/netmusiclist-*.jar and LICENSE.txt. On download, the directory structure may or may not be preserved — if download-artifact flattens paths, softprops/action-gh-release won't find the JAR at build/libs/netmusiclist-$VERSION.jar. Verify locally or with a test tag that the downloaded artifact layout matches the files: glob.
  • softprops/action-gh-release without checkout: The release job has no actions/checkout step. Confirm this action resolves the tag from GITHUB_REF env var (set by the runner) rather than requiring a local .git directory.
  • End-to-end test (required): Push a test tag (e.g. v0.0.0-test.1) to verify the full workflow. PR CI only exercises build.yml, not release.yml, so CI passing here does not validate the release flow. Check that: build artifacts are produced, changelog is generated, and the GitHub Release is created with the expected files attached.

Notes

  • Emoji characters (📦, 📥) were removed from release notes section headers — cosmetic only.

Link to Devin session: https://app.devin.ai/sessions/402413976aa04d2883ea4d183ea3699c
Requested by: @1499501762

…eanup

- Split monolithic job into 3 parallel jobs: build, changelog, release
  - build and changelog run concurrently; release waits for both
- Replace deprecated gradle/gradle-build-action@v2 with gradle/actions/setup-gradle@v4
- Add Gradle dependency caching via setup-java cache: 'gradle'
- Remove redundant 'clean' task (CI workspace is always fresh)
- Add --build-cache and --parallel flags to Gradle
- Use shallow checkout for build job (only changelog needs full history)
- Remove unnecessary runner.os != Windows conditional (always ubuntu)
- Remove macOS stat fallback (always Linux)
- Streamline verify step by removing verbose echo headers
- Merge chmod into build step to reduce step count

Co-Authored-By: Tong317 <zhizhen_yumou@hotmail.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Co-Authored-By: Tong317 <zhizhen_yumou@hotmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant