@@ -106,3 +106,141 @@ To format and fix all ruff issues automatically:
106106``` sh
107107$ ./scripts/format
108108```
109+
110+ ## Release Process
111+
112+ This section outlines the complete process for releasing a new version of the Atlas Python SDK.
113+
114+
115+ ### Step-by-Step Release Process
116+
117+ #### 1. Prepare the Release Branch
118+
119+ ``` sh
120+ # Switch to the main branch and pull latest changes
121+ $ git checkout main
122+ $ git pull origin main
123+
124+ # Create or switch to the release branch
125+ $ git checkout release
126+ $ git pull origin release
127+
128+ # rebase | cherry-pick latest changes from main into release
129+ $ git rebase main
130+ ```
131+
132+ #### 2. Bump the Version
133+
134+ Update the version number in the following files:
135+
136+ - ** ` src/atlas/_version.py ` ** : Update the ` __version__ ` string
137+ - ** ` pyproject.toml ` ** : Update the ` version ` field
138+
139+ ** Version Format** : Use semantic versioning (MAJOR.MINOR.PATCH)
140+ - ** MAJOR** : Breaking changes
141+ - ** MINOR** : New features (backward compatible)
142+ - ** PATCH** : Bug fixes (backward compatible)
143+
144+ ** Examples** :
145+ - ` 1.0.2 ` → ` 1.0.3 ` (patch release for bug fixes)
146+ - ` 1.0.2 ` → ` 1.1.0 ` (minor release for new features)
147+ - ` 1.0.2 ` → ` 2.0.0 ` (major release for breaking changes)
148+
149+ ``` sh
150+ # Example: Update to version 1.0.3
151+ # Edit src/atlas/_version.py
152+ __version__ = " 1.0.3"
153+
154+ # Edit pyproject.toml
155+ version = " 1.0.3"
156+ ```
157+
158+ #### 3. Test and Validate
159+
160+ ``` sh
161+ # Run all tests to ensure everything works
162+ $ ./scripts/test
163+
164+ # Run linting to ensure code quality
165+ $ ./scripts/lint
166+
167+ # Build the package to verify it builds correctly
168+ $ rye build
169+ ```
170+
171+ #### 4. Commit and Push Changes
172+
173+ ``` sh
174+ # Add and commit the version bump
175+ $ git add src/atlas/_version.py pyproject.toml
176+ $ git commit -m " chore: bump version to 1.0.3"
177+
178+ # Push the release branch
179+ $ git push origin release
180+ ```
181+
182+ #### 5. Create the Release Tag
183+
184+ Use the GitHub Actions workflow to create and push the release tag:
185+
186+ 1 . ** Go to GitHub Actions** : Navigate to the "Actions" tab in the GitHub repository
187+ 2 . ** Find "Create Release Tag"** : Look for the workflow in the left sidebar
188+ 3 . ** Run workflow** : Click "Run workflow" with these settings:
189+ - ** Use workflow from** : ` release ` (branch)
190+ - ** Run in dry-run mode** : Check this box first to preview
191+ - ** Confirm release** : Leave empty for dry-run
192+
193+ 4 . ** Review dry-run output** : Check the workflow output to ensure everything looks correct
194+
195+ 5 . ** Create actual release** : Run the workflow again with:
196+ - ** Run in dry-run mode** : Uncheck this box
197+ - ** Confirm release** : Type ` YES ` exactly
198+
199+ Alternatively, if any issue occurs, you can create the tag manually:
200+
201+ ``` sh
202+ # Create and push the tag manually (if preferred)
203+ $ git tag v1.0.3
204+ $ git push origin v1.0.3
205+ ```
206+
207+ #### 6. Automatic Deployment
208+
209+ Once the tag is pushed, the "Deploy Python Package to AWS" workflow will automatically:
210+
211+ 1 . ** Validate the release** : Run the validation script to ensure the tag follows semantic versioning
212+ 2 . ** Run tests** : Execute the full test suite
213+ 3 . ** Build the package** : Create distribution files
214+ 4 . ** Deploy to AWS** : Publish the package to the configured AWS repository
215+
216+ #### 7. Verify the Release
217+
218+ 1 . ** Check GitHub Actions** : Ensure the deployment workflow completed successfully
219+ 2 . ** Verify package availability** : Check that the new version is available in your package repository
220+ 3 . ** Test installation** : Try installing the new version in a clean environment
221+
222+ ### Release Checklist
223+
224+ Use this checklist to ensure you we don't miss any steps:
225+
226+ - [ ] Switched to and updated the ` release ` branch
227+ - [ ] Merged latest changes from ` main `
228+ - [ ] Updated version in ` src/atlas/_version.py `
229+ - [ ] Updated version in ` pyproject.toml `
230+ - [ ] Ran tests (` ./scripts/test ` )
231+ - [ ] Ran linting (` ./scripts/lint ` )
232+ - [ ] Built package successfully (` rye build ` )
233+ - [ ] Committed and pushed version bump
234+ - [ ] Created release tag (via GitHub Actions or manually)
235+ - [ ] Verified deployment workflow completed successfully
236+ - [ ] Tested new version installation
237+
238+ ### Troubleshooting
239+
240+ ** Tag already exists** : If you need to recreate a tag, delete it first:
241+ ``` sh
242+ $ git tag -d v1.0.3 # Delete locally
243+ $ git push origin :v1.0.3 # Delete on remote
244+ ```
245+
246+ ** Rollback** : If you need to rollback a release, create a new patch version rather than trying to delete the problematic release.
0 commit comments