You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+67Lines changed: 67 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -224,3 +224,70 @@ Here are some guidelines when contributing code that affects this database's sch
224
224
* The migration files can be found in `crates/pipeline_manager/migrations`
225
225
* 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.
226
226
* 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
0 commit comments