Skip to content

Commit aad0724

Browse files
committed
docs: document release process
Signed-off-by: Lalith Suresh <lalith@feldera.com>
1 parent 4fb474d commit aad0724

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,70 @@ Here are some guidelines when contributing code that affects this database's sch
224224
* The migration files can be found in `crates/pipeline_manager/migrations`
225225
* Do not modify an existing migration file. If you want to evolve the schema, add a new SQL or rust file to the migrations folder following [refinery's versioning and naming scheme](https://docs.rs/refinery/latest/refinery/#usage). The migration script should update an existing schema as opposed to assuming a clean slate. For example, use `ALTER TABLE` to add a new column to an existing table and fill that column for existing rows with the appropriate defaults.
226226
* If you add a new migration script `V{i}`, add tests for migrations from `V{i-1}` to `V{i}`. For example, add tests that invoke the pipeline manager APIs before and after the migration.
227+
228+
229+
## Release process
230+
231+
There are a few steps to put out a new Feldera release. At a high-level, there
232+
are two phases. First, we put out a release commit which involves updating the
233+
CHANGELOG and bumping package versions, which we then put out a Github release
234+
with. Second, if the previous phase is successful and we are happy with the
235+
released container images, we then put out a post-release commit that updates
236+
existing docker-compose manifests to make use of the newly released container
237+
images.
238+
239+
### Phase 1: release commit
240+
241+
First, make sure sure
242+
you have pulled the latest changes into your local main branch.
243+
244+
```
245+
git pull origin main
246+
```
247+
248+
Next, run the following script from the `scripts` folder:
249+
250+
```
251+
cd scripts
252+
./bump-versions.sh <major / minor / patch>
253+
```
254+
255+
If the `Unreleased` section of the CHANGELOG has new features (i.e., an `Added`
256+
section), we perform a minor release. If we only have bug fixes, we perform a
257+
patch release. We currently do not do `major` releases as we are not ready for
258+
1.0 yet.
259+
260+
Running the above command should switch to a new branch called `release-vX.Y.Z`
261+
where `X.Y.Z` is the new release version. It should have created a commit that
262+
bumped the version and updated the CHANGELOG. You can check the changes by
263+
running:
264+
265+
```
266+
git show
267+
```
268+
269+
There will also be uncommitted changes you can view with `git diff`. We will
270+
merge these changes only after the commited changes are released in phase 2.
271+
272+
Push the committed changes to Github and create a PR. Once the CI passes, merge
273+
it into main, and create a new release from Github. Create a new tag from
274+
within the `release` page on Github. Follow the versioning format of `vX.Y.Z`
275+
when creating the new tag. Add the CHANGELOG entry to the release description.
276+
277+
### Phase 2: post-release commit
278+
279+
Once the release is out, keep an eye on the CI on the main branch. It should
280+
eventually put out containers for the new release (an action called
281+
`containers.yml`). Test the containers locally once that action succeeds.
282+
283+
Once the released containers look fine, it's time to switch the docker-compose
284+
files in the repository to point to the newly released containers. To do so,
285+
let's go back to the uncommitted changes in your local `release-vX.Y.Z` branch.
286+
Create a new branch, commit these changes and get a pull request merged for
287+
this new commit:
288+
289+
```
290+
git checkout -b post-release-vX.Y.Z
291+
git commit -am "docker: point compose file to Feldera version X.Y.Z" -s
292+
git push origin post-release-vX.Y.Z
293+
```

0 commit comments

Comments
 (0)