This content originally appeared on HackerNoon and was authored by William Guo
\ The release process of open-source projects is crucial for ensuring software quality and community collaboration. Take Apache DolphinScheduler as an example, Community Committer Wang Xingjie provides a detailed overview of the open source projects release process under Apache Software Foundation, including environment preparation, process documentation, tool setup, and dependency verification. He also highlights potential issues and solutions encountered during the release process.
\
1. Release Materials
Apache Requirements
Maven Repository Materials (Stored in a temporary repository during the release process)Maven Repository
Release Package, Signature Files, and KeysSign the release version to verify the integrity and authenticity of the downloaded version.
\
DolphinScheduler Requirements
Dockerhub Images
Helm Files
\
Permission Requirements
PMC Members have full release permissions.
Committers have limited permissions and require PMC Member assistance.
\
2. Release Process
Environment Preparation
JDK: Version 1.8 or higher (1.8.0_271)
Maven: Preferably version 3.9 or higher (3.9.6)
Older Maven versions may fail to build deployment packages.
GPG: All versions (2.0.22)
SVN: Version 1.6 or higher (1.7.14), lower versions may report errors.
Git: Version 1.8.3.1
Server Systems: MacOS, Linux (Linux servers, CentOS7)
The server must access the Apache website or GitHub. Windows may have issues with syncing GPG and public key IDs; it is recommended to use non-Windows systems if possible.
\
:::info Release Process Documentation
:::
Basic Tool Preparation
(1) Install GPGFollow the installation documentation.(2) Configure Maven Repository- Modify settings-security.xml
- Modify conf/settings.xml
(ensure correct path); the Apache LDAP username and password are in plain text.
Dependency Package Verification
Verify the license and download URLs of dependency packages. Check the POM commit logs and review PRs to identify any missing or duplicated dependencies.
Version Modification
- For convenience in packaging, consider adding environment variables for operations, including SVN tasks.
- Document Version ModificationNote:
docsdev.js
references the version-specific files on the Apache DolphinScheduler website. Changes to this file will only take effect after merging the website PR. Ensure to check these files before packaging.
Deployment Package Building and Release
Building the deployment package involves three parts:
\
Release Check
Branch PreparationCreate a
prepare
branch in the official GitHub repository. Fetch the branch and run the commands. Theorigin
should match the repository you cloned. If you cloned the official repository, useorigin
; if using a fork, create anupstream
pointing to the official repository, and setGH_REMOTE
toupstream
. All release operations are pushed directly to the official repository. Generally, theprepare
branch is based ondev
. Use the Git protocol rather than HTTPS to avoid tag push failures.Release ValidationCommands may require about 8GB of memory. Check the
dolphinscheduler-dist/target
folder size; if it exceeds 950MB and lacks slimming strategies, pause the release.
\
- Release Preparation
Clean up files from the release check by executing the clean
command. If some files remain, consider using git stash
to temporarily store changes. For multiple releases, clean local and remote tags before running mvn release
to avoid errors.
\
Deployment and Release
a. Execute CommandsThe command results depend on the Release Preparation stage, so do not modify the results (including code). The outcome will appear on Apache Staging Repositories within a few minutes. If files do not appear, check Maven remote repository configuration. If code changes occur during the release, restart the release process from Release Preparation. Use
git release:clean
andgit stash
if needed. For multiple releases, monitor file timestamps on Staging Repositories to ensure synchronization.
\
b. Submit Release Package to Apache Repository Set
SVN_DIR_DEV
andSVN_DIR_RELEASE
as environment variables if possible. Committers typically do not need to execute this step, as they lack commit permissions. DolphinScheduler currently does not allow this setting, so export the GPG key ID and send it to the PMC for addition, or include it in the release email. Ensuretar.gz.asc
files are correctly handled and manually copied if necessary.\
Some servers may not have the shasum
command. You can use sha512sum
as an alternative. For example, use sha512sum
instead of shasum -a 512
.
\
c. Verify Release FilesCheck additional files, such as doc/conf/docsdev.js
. After this, the release packaging work is complete.
Release Emails
Create a Release Node using Python 3.0 to generate an MD file with PR links. Verify PR names and locations to avoid errors. After creating the Release Node, a workflow will be triggered to build Docker images and Helm files. Check the GitHub Actions logsfor details.
If creating multiple Release Nodes, ensure GitHub Releases do not contain duplicates. Delete old nodes before creating new ones.
There are three emails to send:
a. Release Vote EmailFollow the guidelines in the documentation, and ensure to subscribe to the dev mailing list for visibility. Verify all links before sending. Wait at least 72 hours for PMC votes. If no PMC votes are negative, the voting ends.
b. Vote Completion EmailFollow the guidelines in the documentation and inquire about PMC titles if necessary.
c. Final Email
Details are to be provided in subsequent sections.
Website Documentation Updates
For new versions, update the version information in the Issue Template. Ensure accurate modifications to avoid content loss or accessibility issues on the website. Clear browser cache or use incognito mode if necessary.
After updating, send an email notifying the release completion. Delete the prepared branch after the release email.
News Release
Draft a news release describing the major changes in the version, focusing on bug fixes and improvements. Include key PR details and images if available. Translate PR names for Chinese documents. Use Python 3.0 for final tools and execution.
3. Version Validation
Website Documentation
Log in to the website to verify if the version is displayed correctly.
Dockerhub Images
Check all service images for updates and tags.
\
:::tip Release Completed!
Congratulations! With these steps completed, the Apache DolphinScheduler release process is finished. Thanks to all contributors and community support. Interested in release work? Feel free to follow this guide and participate in contribution.
:::
\
This content originally appeared on HackerNoon and was authored by William Guo
William Guo | Sciencx (2024-08-23T11:58:40+00:00) How to Release a New Version of an Open Source Project Under the Apache Software Foundation. Retrieved from https://www.scien.cx/2024/08/23/how-to-release-a-new-version-of-an-open-source-project-under-the-apache-software-foundation/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.