-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Releasing a new Version
- Ensure that all tests are green
- Execute test locally to ensure everything (especially the fetchers) is working
- Some fetchers may not work due to licensing. See https://devdocs.jabref.org/advanced-reading/fetchers how to get keys. More fetchers are enabled locally than on the CI, because of rate limits.
- Ensure that Snapcraft is running. For instance, at release 5.10, the underlying Ubuntu image (20.04) was too old.
Hint: You can work on a branch
main-release. This will trigger the GitVersion tool, but not indicate a real release. After JabRef works fine, you can push tomain.
-
Update Journal Abbreviation List and CSL styles -> These are managed by Dependabot. Trigger Dependabot manually under https://github.com/JabRef/jabref/network/updates for .gitmodules
-
Update SBOM. Trigger workflow Update SBOM and open PR
-
CHANGELOG.md- Change version from
[Unreleased]to[5.2] – 2020-10-03. - Remove empty sections of the release.
- At the very end of the file:
[5.2]: https://github.com/JabRef/jabref/compare/v5.1...v5.2
- Change version from
-
GitVersion.yml:-
No changes required except if a) there was an alpha or beta release before or b) this release is an alpha or beta release
-
In both cases, the
tagand thepre-release-weighthave to be changed according to:New release tagpre-release-weightalpha alpha15000beta beta30000stable ''50000Reason: we need to have an always increasing build number
You can check the current build number at GitVersion CI output:
WeightedPreReleaseNumber": 15516,
-
-
snap/snapcraft.yml. Check thatgradeisstable(should be)grade: stable
-
Create a release commit
-
git add CHANGELOG.md(to stage the changes on CHANGELOG.md). Maybe usegit gui. git commit -m "Release v6.0"
-
(For alpha/beta releases, one needs to use the main branch. We ensure below that these macOS images are notarized. - Getting GitVersion to output the right numbers on the tag build is too hard.)
-
git tag v6.0. For alpha.x versions, use "pattern"v6.0-alpha.3. The last dot is important. See https://github.com/JabRef/jabref-issue-melting-pot/issues/742 for details. -
git push upstream v6.0- to push the newly created tag -
git push upstream- to push themainbranch -- an updatedmainbranch is important for the build of the release to succeed (GitVersion). This update will use the tag pushed in the step before. - In case of an alpha/beta release: Manually trigger build on
mainwith notarization enabled. Link: https://github.com/JabRef/jabref/actions/workflows/binaries.yml. -
Wait until the build completes. DO NOT UPDATE THE
mainBRANCH. The important build is the build for thetag. The parallel build onmainis important for Snapcraft only (and for alpha/beta releases)
- For GitHub-based builds, we notarize on the tag only
- In case of an alpha/beta release, login to
build-upload.jabref.organd copy the build frommain(/var/www/builds.jabref.org/www/main) totags.
(For alpha/beta releases, one needs to use the main branch. We ensured above that the macOS images are notarized. - Getting GitVersion to output the right numbers on the tag build is too hard.)
- Download binaries from the tag (This is important for mac because only the tag release gets correctly signed + notarized). https://builds.jabref.org/tags/. Additionally download https://builds.jabref.org/main/JabRef-$version-portable_linux.tar.gz to test the snapcraft build. One can start VMs using some of https://github.com/JabRef/jabref/tree/main/scripts/vms/.
- At least, quickly check if contents in Help - About JabRef are properly replaced. Also create a new library and create a new entry.
- Test https://builds.jabref.org/main/JabRef-$version-portable_linux.tar.gz -- this
.tar.gzfile is also used for the snapcraft release. - On macOS:
xcrun stapler validate JabRef-$version.dmgpkgutil --check-signature JabRef-$version.pkg
-
FossHub (via developer account)
- It is very important to do that BEFORE GitHub, because of the auto update feature.
- Use tools/wget
- point to the binaries at the build artifacts of GitHub (the ones at https://builds.jabref.org/tag/v5.x also work)
- After the upload: adjust them under "files".
- (currently not working) Semi-automatic upload (see Tools - JSON on FossHub)
- adapt
upload-to-fosshub.json - POST it to https://www.fosshub.com/JSTools/uploadJson
- adapt
- Manual upload:
- For each file:
- "Add File"
- Type: Select fitting type. E.g., "Windows Installer (32 bit)"
- Version:
v5.1 - Drag file
- For each file:
-
GitHub
-
Ensure that https://builds.jabref.org/tags/ contains a single tag directory only.
-
If an alpha/beta release was made, copy the binaries from
mainto thetagsfolder -
Do a release creation using the GitHub workflow Release binaries on GitHub running on the release tag. This automatically executes following steps:
- Create new release based on tag.
- Upload binaries to GitHub release page.
-
Turn the draft into a public release
- Add CHANGELOG.md text to the GitHub release
-
-
Snapcraft: Release to Ubuntu Store
- Ensure that the branch
mainwas successfully build.snapcraft.ymlpoints to https://builds.jabref.org/main/, which needs to contain the released version. - Go to https://snapcraft.io/jabref/builds. Trigger a new build to ensure that the latest one of
mainis used. This takes about 8 minutes. Then, go to https://snapcraft.io/jabref/builds. release the build version tostableand also tobetaandcandidate. Click on "Save"!
- The release version number should be ending in .60000. If not, there was a push to
mainmeanwhile. - Other information is available at https://dashboard.snapcraft.io/dev/snaps/7999/
- One can use https://github.com/JabRef/jabref/tree/main/scripts/vms/ubuntu to fire up a VM.
- On Ubuntu
snap install --beta jabref - Test whether JabRef shows the right version
- Ensure that the branch
-
- Not necessary anymore, because of https://github.com/vedantmgoyal9/vedantmgoyal9/blob/main/WinGetAutomation/Formula/j/jabref.jabref.json.
-
FlatPak.
- Check if https://github.com/flathub/org.jabref.jabref/ builds.
After snapcraft succeded, one can continue.
One really needs to wait for snapcraft, because it relies on the build artifacts of main.
Ensure that snapcraft build was released. If you did not, you will get in big trouble. Main reason: Inside snapcraft.yaml file, https://builds.jabref.org/main/ is used as source for the build.
-
CHANGELOG.md-
At the beginning of the file:
## [Unreleased] ### Added ### Changed ### Fixed ### Removed
-
At the very end of the file:
[Unreleased]: https://github.com/JabRef/jabref/compare/v5.1...HEAD
-
-
Edit- we always usesnapcraft.ymlunder/snap/and change the download link to point to the new version cycle. See https://github.com/JabRef/jabref/pull/11467 for an example.main. -
Edit https://github.com/JabRef/jabref/blob/main/.github/ISSUE_TEMPLATE/bug_report.yml and change to the new version
-
Update https://github.com/JabRef/jabref/blob/main/.github/workflows/gource.yml to use correct dates and filenames
-
gource_title(2x),gource_start_date(2x),mv(at "Store video") (2x),gource_stop_date(1x)
-
After a stable release, set
pre-release-weightinGitVersion.ymlback to0. -
Commit the changes for the new dev cycle
- git commit with message:
Start new development cycle +semver: minor- Without
semver: minor, the version number will not be correct in the about dialog etc. -
+semver: minorto increase the version number - The commit must not be empty (otherwise no build is triggered)
- Without
git push origin main
- git commit with message:
-
Remove old builds at
/var/www/builds.jabref.org/www/mainand/var/www/builds.jabref.org/www/jdk-ea. -
Check the Milestone list at https://github.com/JabRef/jabref/milestones
- Go to the milestone of the currently released version.
- Move all open issues to the next milestone
- Close the milestone
- Write a blog entry (at https://github.com/JabRef/blog.jabref.org/).
- Write a news entry at https://discourse.jabref.org/c/news/5
- Follow https://github.com/JabRef/jabref/wiki/Information-update-after-a-release/
- Home
- General Information
- Development
- Please go to our devdocs at https://devdocs.jabref.org
- GSoC 2025 ideas list
- Completed "Google Summer of Code" (GSoC) projects
- GSoC 2025 - Walkthrough and Welcome Tab
- GSoC 2025 ‐ Git Support for JabRef
- GSoC 2024 ‐ Improved CSL Support (and more LibreOffice‐JabRef integration enhancements)
- GSoC 2024 - Lucene Search Backend Integration
- GSoC 2024 ‐ AI‐Powered Summarization and “Interaction” with Academic Papers
- GSoC 2022 — Implement a Three Way Merge UI for merging BibTeX entries
- GSoC 2021 - Improve pdf support in JabRef
- GSoC 2021 - Microsoft Word Integration
- GSoc 2019 - Bidirectional Integration — Paper Writing — LaTeX and JabRef 5.0
- GSoC Archive
- Release
- JabCon Archive