Spaces:
Paused
Paused
|
Download docs/developer_docs/contributing/release-process.md from Leon4gr45/powerbi: direct link, hf CLI and curl.
- Browser
- Download file 9.7 kB
-
https://huggingface.co/spaces/Leon4gr45/powerbi/resolve/main/docs/developer_docs/contributing/release-process.md
- Command line
-
hf download hf://spaces/Leon4gr45/powerbi/docs/developer_docs/contributing/release-process.md
-
curl -L -o release-process.md https://huggingface.co/spaces/Leon4gr45/powerbi/resolve/main/docs/developer_docs/contributing/release-process.md
9.7 kB
| title: Release Process | |
| sidebar_position: 6 | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| # Release Process | |
| Understand Apache Superset's release process, versioning strategy, and how to participate. | |
| ## Release Cadence | |
| ### Schedule | |
| - **Major releases (X.0.0)**: Annually (approximately) | |
| - **Minor releases (X.Y.0)**: Quarterly | |
| - **Patch releases (X.Y.Z)**: As needed for critical fixes | |
| ### Version Numbering | |
| Superset follows [Semantic Versioning](https://semver.org/): | |
| ``` | |
| MAJOR.MINOR.PATCH | |
| β β β | |
| β β βββ Bug fixes, security patches | |
| β βββββββ New features, backwards compatible | |
| βββββββββββββ Breaking changes | |
| ``` | |
| ### Examples | |
| - `3.0.0`: Major release with breaking changes | |
| - `3.1.0`: Minor release with new features | |
| - `3.1.1`: Patch release with bug fixes | |
| ## Release Types | |
| ### Major Releases (X.0.0) | |
| #### Includes | |
| - Breaking API changes | |
| - Deprecated feature removals | |
| - Major architectural changes | |
| - Database migration requirements | |
| #### Process | |
| - 2-3 month preparation period | |
| - Multiple release candidates (RC) | |
| - Extensive testing period | |
| - Migration guides required | |
| ### Minor Releases (X.Y.0) | |
| #### Includes | |
| - New features | |
| - Performance improvements | |
| - Non-breaking API additions | |
| - Minor UI/UX updates | |
| #### Process | |
| - 1 month preparation | |
| - 1-2 release candidates | |
| - Standard testing period | |
| ### Patch Releases (X.Y.Z) | |
| #### Includes | |
| - Bug fixes | |
| - Security patches | |
| - Documentation fixes | |
| - Dependency updates (security) | |
| #### Process | |
| - Fast track for critical issues | |
| - May skip RC for urgent security fixes | |
| - Minimal testing requirements | |
| ## Release Process (For Release Managers) | |
| ### 1. Pre-Release Preparation | |
| #### Feature Freeze | |
| ```bash | |
| # Create release branch | |
| git checkout -b release-X.Y | |
| git push upstream release-X.Y | |
| # Update version | |
| # Edit setup.py and package.json | |
| VERSION = "X.Y.0rc1" | |
| ``` | |
| #### Update Documentation | |
| - CHANGELOG.md | |
| - UPDATING.md (for breaking changes) | |
| - Documentation version | |
| #### Release Notes Template | |
| ```markdown | |
| # Apache Superset X.Y.0 | |
| ## π Highlights | |
| - Major feature 1 | |
| - Major feature 2 | |
| ## π New Features | |
| - Feature 1 (#PR) | |
| - Feature 2 (#PR) | |
| ## π Bug Fixes | |
| - Fix 1 (#PR) | |
| - Fix 2 (#PR) | |
| ## β οΈ Breaking Changes | |
| - Breaking change 1 | |
| - Migration required for X | |
| ## π Documentation | |
| - Doc update 1 (#PR) | |
| ## π Thank You | |
| Thanks to all contributors! | |
| ``` | |
| ### 2. Create Release Candidate | |
| #### Build RC | |
| ```bash | |
| # Tag release candidate | |
| git tag -a vX.Y.Zrc1 -m "Apache Superset X.Y.Z RC1" | |
| git push upstream vX.Y.Zrc1 | |
| # Build source distribution | |
| python setup.py sdist | |
| # Build wheel | |
| python setup.py bdist_wheel | |
| # Sign artifacts | |
| gpg --armor --detach-sig dist/apache-superset-X.Y.Zrc1.tar.gz | |
| ``` | |
| #### Upload to staging | |
| ```bash | |
| # Upload to Apache staging | |
| svn co https://dist.apache.org/repos/dist/dev/superset | |
| cd superset | |
| mkdir X.Y.Zrc1 | |
| cp /path/to/dist/* X.Y.Zrc1/ | |
| svn add X.Y.Zrc1 | |
| svn commit -m "Add Apache Superset X.Y.Z RC1" | |
| ``` | |
| ### 3. Voting Process | |
| #### Call for Vote Email | |
| Send to dev@superset.apache.org: | |
| ``` | |
| Subject: [VOTE] Release Apache Superset X.Y.Z RC1 | |
| Hi all, | |
| I'd like to call a vote to release Apache Superset version X.Y.Z RC1. | |
| The release candidate: | |
| - Git tag: vX.Y.Zrc1 | |
| - Git hash: abc123def456 | |
| - Source: https://dist.apache.org/repos/dist/dev/superset/X.Y.Zrc1/ | |
| Resources: | |
| - Release notes: [link] | |
| - CHANGELOG: [link] | |
| - PR list: [link] | |
| The vote will be open for at least 72 hours. | |
| [ ] +1 approve | |
| [ ] +0 no opinion | |
| [ ] -1 disapprove (and reason why) | |
| Thanks, | |
| [Your name] | |
| ``` | |
| #### Voting Rules | |
| - **Duration**: Minimum 72 hours | |
| - **Required**: 3 +1 votes from PMC members | |
| - **Veto**: Any -1 vote must be addressed | |
| #### Testing Checklist | |
| ```markdown | |
| - [ ] Source builds successfully | |
| - [ ] Docker image builds | |
| - [ ] Basic functionality works | |
| - [ ] No critical bugs | |
| - [ ] License check passes | |
| - [ ] Security scan clean | |
| ``` | |
| ### 4. Release Approval | |
| #### Tally Votes | |
| ``` | |
| Subject: [RESULT][VOTE] Release Apache Superset X.Y.Z RC1 | |
| The vote to release Apache Superset X.Y.Z RC1 has passed. | |
| +1 votes (binding): | |
| - PMC Member 1 | |
| - PMC Member 2 | |
| - PMC Member 3 | |
| +1 votes (non-binding): | |
| - Contributor 1 | |
| - Contributor 2 | |
| 0 votes: | |
| - None | |
| -1 votes: | |
| - None | |
| Thank you to everyone who tested and voted! | |
| ``` | |
| ### 5. Perform Release | |
| #### Promote RC to Release | |
| ```bash | |
| # Tag final release | |
| git tag -a vX.Y.Z -m "Apache Superset X.Y.Z" | |
| git push upstream vX.Y.Z | |
| # Move from dev to release | |
| svn mv https://dist.apache.org/repos/dist/dev/superset/X.Y.Zrc1 \ | |
| https://dist.apache.org/repos/dist/release/superset/X.Y.Z | |
| ``` | |
| #### Publish to PyPI | |
| ```bash | |
| # Upload to PyPI | |
| python -m twine upload dist/*X.Y.Z* | |
| ``` | |
| #### Build Docker Images | |
| ```bash | |
| # Build and push Docker images | |
| docker build -t apache/superset:X.Y.Z . | |
| docker push apache/superset:X.Y.Z | |
| docker tag apache/superset:X.Y.Z apache/superset:latest | |
| docker push apache/superset:latest | |
| ``` | |
| ### 6. Post-Release Tasks | |
| #### Update Documentation | |
| ```bash | |
| # Update docs version | |
| cd docs | |
| # Update docusaurus.config.js with new version | |
| npm run build | |
| ``` | |
| #### Announcement Email | |
| Send to announce@apache.org, dev@superset.apache.org: | |
| ``` | |
| Subject: [ANNOUNCE] Apache Superset X.Y.Z Released | |
| The Apache Superset team is pleased to announce the release of | |
| Apache Superset X.Y.Z. | |
| Apache Superset is a modern data exploration and visualization platform. | |
| This release includes [number] commits from [number] contributors. | |
| Highlights: | |
| - Feature 1 | |
| - Feature 2 | |
| - Bug fixes and improvements | |
| Download: https://superset.apache.org/docs/installation/ | |
| Release Notes: https://github.com/apache/superset/releases/tag/vX.Y.Z | |
| PyPI: https://pypi.org/project/apache-superset/ | |
| Docker: docker pull apache/superset:X.Y.Z | |
| Thanks to all contributors who made this release possible! | |
| The Apache Superset Team | |
| ``` | |
| #### Update GitHub Release | |
| ```bash | |
| # Create GitHub release | |
| gh release create vX.Y.Z \ | |
| --title "Apache Superset X.Y.Z" \ | |
| --notes-file RELEASE_NOTES.md | |
| ``` | |
| ## For Contributors | |
| ### During Feature Freeze | |
| #### What's Allowed | |
| - β Bug fixes | |
| - β Documentation updates | |
| - β Test improvements | |
| - β Security fixes | |
| #### What's Not Allowed | |
| - β New features | |
| - β Major refactoring | |
| - β Breaking changes | |
| - β Risky changes | |
| ### Testing RCs | |
| #### How to Test | |
| ```bash | |
| # Install RC from staging | |
| pip install https://dist.apache.org/repos/dist/dev/superset/X.Y.Zrc1/apache-superset-X.Y.Zrc1.tar.gz | |
| # Or use Docker | |
| docker pull apache/superset:X.Y.Zrc1 | |
| ``` | |
| #### What to Test | |
| - Your use cases | |
| - New features mentioned in release notes | |
| - Upgrade from previous version | |
| - Database migrations | |
| - Critical workflows | |
| #### Reporting Issues | |
| ```markdown | |
| Found issue in RC1: | |
| - Description: [what's wrong] | |
| - Steps to reproduce: [how to trigger] | |
| - Impact: [blocker/major/minor] | |
| - Suggested fix: [if known] | |
| ``` | |
| ### CHANGELOG Maintenance | |
| #### Format | |
| ```markdown | |
| ## X.Y.Z (YYYY-MM-DD) | |
| ### Features | |
| - feat: Description (#PR_NUMBER) | |
| ### Fixes | |
| - fix: Description (#PR_NUMBER) | |
| ### Breaking Changes | |
| - BREAKING: Description (#PR_NUMBER) | |
| Migration: Steps to migrate | |
| ``` | |
| #### Generating CHANGELOG | |
| ```bash | |
| # Use git log to generate initial list | |
| git log --oneline vX.Y-1.Z..vX.Y.Z | grep -E "^[a-f0-9]+ (feat|fix|perf|refactor|docs)" | |
| # Group by type and format | |
| ``` | |
| ## Breaking Changes Process | |
| ### Documentation Required | |
| #### UPDATING.md Entry | |
| ````markdown | |
| # X.Y.Z | |
| ## Breaking Change: [Title] | |
| ### Description | |
| What changed and why. | |
| ### Before | |
| ```python | |
| # Old way | |
| old_function(param1, param2) | |
| ``` | |
| ```` | |
| ### After | |
| ```python | |
| # New way | |
| new_function(param1, param2, param3) | |
| ``` | |
| ### Migration Steps | |
| 1. Update your code to... | |
| 2. Run migration script... | |
| 3. Test that... | |
| ```` | |
| ### Deprecation Process | |
| 1. **Version N**: Mark as deprecated | |
| ```python | |
| @deprecated(version="3.0.0", remove_in="4.0.0") | |
| def old_function(): | |
| warnings.warn("Use new_function instead", DeprecationWarning) | |
| ```` | |
| 2. **Version N+1**: Keep deprecated with warnings | |
| 3. **Version N+2**: Remove completely | |
| ## Security Releases | |
| ### Expedited Process | |
| - No RC required for critical security fixes | |
| - Coordinate with security@apache.org | |
| - Embargo period may apply | |
| - CVE assignment through ASF security team | |
| ### Security Advisory Template | |
| ```markdown | |
| CVE-YYYY-XXXXX: [Title] | |
| Severity: [Critical/High/Medium/Low] | |
| Affected Versions: < X.Y.Z | |
| Fixed Version: X.Y.Z | |
| Description: | |
| [Vulnerability description] | |
| Mitigation: | |
| [How to fix or work around] | |
| Credit: | |
| [Reporter name/organization] | |
| ``` | |
| ## Resources | |
| ### Internal | |
| - [Apache Release Policy](https://www.apache.org/legal/release-policy.html) | |
| - [Superset Release History](https://github.com/apache/superset/releases) | |
| - [Version Strategy Discussion](https://github.com/apache/superset/discussions) | |
| ### Tools | |
| - [Release Scripts](https://github.com/apache/superset/tree/master/scripts/release) | |
| - [Superset Repository Scripts](https://github.com/apache/superset/tree/master/scripts) | |
| Next: Return to [Contributing Overview](./overview.md) | |