Skip to content

Commit af7f55f

Browse files
authored
Merge pull request #11539 from owncloud/create_releasing_guide
[docs-only] Create a releasing guide
2 parents 796d2be + 76ebef9 commit af7f55f

File tree

11 files changed

+341
-34
lines changed

11 files changed

+341
-34
lines changed

Makefile

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,16 +162,30 @@ clean:
162162
.PHONY: docs-generate
163163
docs-generate:
164164
# empty the folders first to only have files that are generated without remnants
165-
find docs/services/_includes/ -type f \( -name "*" ! -name ".git*" ! -name "_*" \) -delete || exit 1
165+
find docs/services/_includes/ -type f \( -name "*" ! -name ".git*" \) -delete || exit 1
166166

167+
# generate the services md files for dev docs
167168
@for mod in $(OCIS_MODULES); do \
168-
$(MAKE) --no-print-directory -C $$mod docs-generate || exit 1; \
169-
done
169+
$(MAKE) --no-print-directory -C $$mod docs-generate || exit 1; \
170+
done
171+
172+
# generate envvar adoc and md tables for dev and admin docs
173+
$(MAKE) --no-print-directory -C docs docs-generate || exit 1
174+
175+
# only copy all added/removed/deprecated files that have been created for a release + .gitkeep
176+
# note that files are locally ignored via _include/.gitignore for pushing, but required by the drone process
177+
# for markdown, if e.g. an `_index.md` file would be present containing links, hugo thinks it must render and fails
178+
# the -I flag followed by % cp % means that all passed arguments will concatenated to the last %
179+
find docs/services/general-info/envvars/env-var-deltas/ -type f \( -name ".gitkeep" -o -name "*-added.*" -o -name "*-removed.*" -o -name "*-deprecated.*" \) | xargs -I % cp % docs/services/_includes/adoc/env-var-deltas/
180+
181+
.PHONY: docs-drone-test
182+
# imitate a full drone run to build docs without pushing to the web.
183+
# this can help identify uncaught issues when running `make -C docs docs-serve` only.
184+
docs-drone-test:
185+
$(MAKE) --no-print-directory docs-generate
186+
$(MAKE) --no-print-directory -C docs docs-copy
187+
$(MAKE) --no-print-directory -C docs test
170188

171-
$(MAKE) --no-print-directory -C docs docs-generate || exit 1
172-
# .adoc for admin docs, .md for dev docs
173-
cp docs/services/general-info/envvars/env-var-deltas/*.adoc docs/services/_includes/adoc/env-var-deltas/
174-
cp docs/services/general-info/envvars/env-var-deltas/*.md docs/services/_includes/adoc/env-var-deltas/
175189

176190
.PHONY: check-env-var-annotations
177191
check-env-var-annotations:

docs/helpers/changed_envvars.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
## create a branch to prepare the changes
1919

2020
# CHANGE according your needs
21-
# old is the base version to compare from
22-
# new is the target version to compare to
23-
# tagged versions must be of format: 'tags/v6.0.0'
24-
# master is different, it must be: 'heads/master'
21+
# old is the base version to compare from which is always a tagged release
22+
# new is the target version to compare to and can be a branch or tagged
23+
# tagged versions must be of format: 'tags/v7.1.0'
24+
# branches are different, master or stable-x.y: 'heads/master'
25+
# stick with master because the follow up process is much easier and you avoid confusion
2526
versionOld: str = 'tags/v7.1.0'
2627
versionNew: str = 'heads/master'
2728

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: Releasing Processes
3+
date: 2025-07-03T00:00:00+00:00
4+
weight: 10
5+
geekdocRepo: https://github.com/owncloud/ocis
6+
geekdocEditPath: edit/master/docs/ocis/releasing_guide
7+
geekdocFilePath: _index.md
8+
geekdocCollapseSection: true
9+
---
10+
11+
## General Information
12+
13+
This section provides information how to prepare a new Infinite Scale release.
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
title: "Releasing Guide"
3+
date: 2020-12-16T20:35:00+01:00
4+
weight: 0
5+
geekdocRepo: https://github.com/owncloud/ocis/releasing_guide
6+
geekdocEditPath: edit/master/docs/ocis
7+
geekdocFilePath: releasing_guide.md
8+
---
9+
10+
{{< toc >}}
11+
12+
To prepare an oCIS production release, you must follow a specific sequence of steps in the correct order.
13+
14+
## New ocis Version
15+
16+
Use this detailed copy/paste checklists for Jira when starting a new release.
17+
18+
{{< hint warning >}}
19+
* The **examples** use the following versions which will need to be **adapted** for the planned release:
20+
* For Major and Minor versions: `7.2.0`
21+
* For Patch releases: `7.2.1`
22+
* The process differs slighly when creating a patch release only.
23+
* Changes applied to a `stable-7.2` branch valid for documentation will be processed to the `docs-stable-x.y` branch automatically after merging.
24+
{{< /hint >}}
25+
26+
### Steps for Major or Minor Releases
27+
28+
{{< hint warning >}}
29+
* A new production release is being prepared and the implementation of new features has finished in master.
30+
* `web`, `reva` and `dependencies` have already been bumped.
31+
* Translations
32+
* For oCIS, all required translations changes are included.
33+
* For Web, all translation changes have been applied and are part of the web version provided.
34+
* **Only** bug fixes to release candidates are allowed.
35+
{{< /hint >}}
36+
37+
#### Overview
38+
39+
1. Start the Releasing Process
40+
1. Start the Release Candidates Phase
41+
1. Prepare Release\
42+
Integrate all RC changes and set the final version
43+
1. Sign-off the Releasing Process
44+
1. Release the new Version
45+
1. Postprocessing and Finalization\
46+
Backport changes to `master` and create other required stable branches, update cronjobs and clean up
47+
48+
#### Details
49+
50+
```
51+
https://owncloud.dev/ocis/releasing_guide/
52+
53+
* [ ] Start the Releasing Process
54+
* [ ] Create a `stable-7.2` branch based on current `master`
55+
* [ ] Inform documentation that the releasing process has started
56+
57+
* [ ] Start the Release Candidates Phase
58+
* [ ] Create a new feature branch based on `stable-7.2`
59+
* [ ] Move all changelog items from `unreleased` to `7.2.0-rc.1_2025-06-12`
60+
* [ ] Bump oCIS version in `ocis-pkg/version/version.go`
61+
* [ ] Bump oCIS version in `sonar-project.properties`
62+
* [ ] Create PR with `[full-ci][k6-test]` against `stable-7.2`
63+
* [ ] Get PR approved. **DO NOT MERGE YET**
64+
* [ ] Wait for pipeline to be green
65+
* [ ] Create tag: `git tag -s v7.2.0-rc.1 -m "Release 7.2.0-rc.1"`
66+
* [ ] Push tag: `git push origin v7.2.0-rc.1`
67+
* [ ] Watch the PR to see pipeline succeed (can be restarted)
68+
* [ ] Merge PR
69+
* [ ] Sync with DevOps and Product\
70+
Repeat process with `rc.2`,`rc.3`, ...
71+
* [ ] All required translations from oCIS are included
72+
* [ ] All issues are fixed, RC phase has finished
73+
74+
* [ ] Prepare Release
75+
* [ ] Create a new feature branch based on `stable-7.2`
76+
* [ ] Move all changelog items from `7.2.0-rc.*` to `7.2.0_2025-04-01`
77+
* [ ] Bump oCIS version in `ocis-pkg/version/version.go`
78+
* [ ] Bump oCIS version in `sonar-project.properties`
79+
* [ ] Create PR with `[full-ci][k6-test]` against `stable-7.2`
80+
* [ ] Mark PR as **Draft** to avoid accidentially merging
81+
* [ ] Get PR approved. **DO NOT MERGE YET**\
82+
Info: merging will be done in step *Release the new Version*
83+
* [ ] Wait for pipeline to be green
84+
85+
* [ ] Get new Release Sign-off (jira)
86+
* [ ] **EITHER (preferred):** Find someone who wants the release more than you do, and have them sign-off
87+
* [ ] **OR (not recommended):** Have the appropriate people sign the *release sign-off* document
88+
89+
* [ ] Release the new Version
90+
* [ ] Create tag: `git tag -s v7.2.0 -m "Release 7.2.0"`\
91+
Note the tag name scheme is important
92+
* [ ] Push tag: `git push origin v7.2.0`
93+
* [ ] Watch the PR to see pipeline succeed (can be restarted)
94+
* [ ] Smoke test docker image `owncloud/[email protected]`
95+
* [ ] Choose any docker-compose example from oCIS repository
96+
* [ ] Export `OCIS_DOCKER_IMAGE=owncloud/ocis`
97+
* [ ] Export `OCIS_DOCKER_TAG=7.2.0`
98+
* [ ] `docker compose up -d`
99+
* [ ] Confirm oCIS version in browser and start the `upload-download-awesome` test
100+
* [ ] Remove the **Draft** state and Merge PR\
101+
This is the PR from step *Prepare Release*
102+
* [ ] Delete the feature branch
103+
* [ ] Announce release in *Teams channel: oCIS*
104+
105+
* [ ] Postprocessing and Finalization
106+
* [ ] Backport `stable-7.2` to the master branch
107+
* [ ] Create a `docs-stable-7.2` branch
108+
* [ ] Create orphan branch: `git checkout --orphan docs-stable-7.2`
109+
* [ ] Initial commit: `git commit --allow-empty -m "initial commit"`
110+
* [ ] Push it: `git push`
111+
* [ ] Adjust the `.drone.star` file to write to `docs-stable-7.2`
112+
* [ ] Find target_branch value in the docs section and change it to `docs-stable-7.2`
113+
* [ ] Example: https://github.com/owncloud/ocis/blame/56f7645f0b11c9112e15ce46f6effd2fea01d6be/.drone.star#L2249
114+
* [ ] Add `stable-7.2` to the nightly cron jobs in drone (`Settings` -> `Cron Jobs`)
115+
```
116+
117+
### Steps for Patch Releases Only
118+
119+
{{< hint warning >}}
120+
* A patch branch is prepared, based off the appropriate stable branch, and contains all the changes including `web`, `reva` and `dependencies` bumps. The patch branch is merged into the corresponding stable branch. No release candidates are used because the changes are known.
121+
* Translations
122+
* For oCIS, all required translations changes are included.
123+
* For Web, all translation changes have been applied and are part of the web version provided.
124+
* **Only** bug fixes to the patch branch are allowed.
125+
{{< /hint >}}
126+
127+
#### Overview
128+
129+
1. Prepare Release\
130+
Integrate all patches and set the final version
131+
1. Sign-off the Releasing Process
132+
1. Release the new Version
133+
1. Check Forward Porting to Master
134+
135+
#### Details
136+
137+
```
138+
https://owncloud.dev/ocis/releasing_guide/
139+
140+
* [ ] Prepare Release
141+
* [ ] Create a new feature branch based on `stable-7.2`
142+
* [ ] Move all changelog items from `unreleased` to `7.2.1_2025-04-01`
143+
* [ ] Bump oCIS version in `ocis-pkg/version/version.go`
144+
* [ ] Bump oCIS version in `sonar-project.properties`
145+
* [ ] Create PR with `[full-ci][k6-test]` against `stable-7.2`
146+
* [ ] Mark PR as **Draft** to avoid accidentially merging
147+
* [ ] Get PR approved **requires 2 approvals**, **DO NOT MERGE YET**\
148+
Info: merging will be done in step *Release the new Version*
149+
* [ ] Wait for pipeline to be green
150+
151+
* [ ] Get new Release Sign-off (confluence)
152+
* [ ] **EITHER (preferred):** Find someone who wants the release more than you do, and have them sign-off
153+
* [ ] **OR (not recommended):** Have the appropriate people sign the *release sign-off* document
154+
155+
* [ ] Release the new Version
156+
* [ ] Create tag: `git tag -s v7.2.1 -m "Release 7.2.1"`\
157+
Note the tag name scheme is important
158+
* [ ] Push tag: `git push origin v7.2.1`
159+
* [ ] Watch the PR to see pipeline succeed (can be restarted)
160+
* [ ] Smoke test docker image `owncloud/[email protected]`
161+
* [ ] Choose any docker-compose example from ocis repository
162+
* [ ] Export `OCIS_DOCKER_IMAGE=owncloud/ocis`
163+
* [ ] Export `OCIS_DOCKER_TAG=7.2.1`
164+
* [ ] `docker compose up -d`
165+
* [ ] Confirm oCIS version in browser and start the `upload-download-awesome` test
166+
* [ ] Remove the **Draft** state and Merge PR\
167+
This is the PR from step *Prepare Release*
168+
* [ ] Delete the feature branch
169+
* [ ] Announce release in *Teams channel: oCIS*
170+
171+
* [ ] Check if Forward Porting to Master is Required
172+
```
173+
174+
## Update Documentation Related Data
175+
176+
### Envvar Changes
177+
178+
Follow the [Release Process for Envvars](https://owncloud.dev/services/general-info/envvars/new-release-process/) documentation to update the required environment variable data. These changes **must** be present in the appropriate `stable-7.2` branch and should be applied to the respective feature branch during the development cycle. This **avoids manually backporting** to `stable-7.2` but may be required if changes go to master instead. Changes to envvars are typically found in the `docs` folder.
179+
180+
{{< hint warning >}}
181+
The admin docs processes access the data via the branch name, not the tag set. Therefore, any changes applied to the stable branch are accessible to the documentation process without the need of a new version.
182+
{{< /hint >}}
183+
184+
### Prepare Admin Docs
185+
186+
The admin documentation must be prepared for the new release.
187+
188+
Note that this section is only **informational** for oCIS developers and is done by the documentation team. This is why they need to be informed in a timely manner.
189+
190+
* [ ] Create **overview release notes** in the `docs-main` repo based on the changelog\
191+
The source is most likely the unreleased folder during the development cycle
192+
* [ ] For Major and Minor versions:
193+
* [ ] Add all **documentation changes** including the upgrade guide in the `docs-ocis` repo in master
194+
* [ ] Create a new release branch in the `docs-ocis` repo based off master
195+
* [ ] **Update oCIS branches and versions** in the `docs` repo
196+
* [ ] For Patch releases:
197+
* [ ] **Update oCIS versions** in the `docs` repo
198+
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
title: "Troubleshooting"
3+
date: 2020-12-16T20:35:00+01:00
4+
weight: 0
5+
geekdocRepo: https://github.com/owncloud/ocis/releasing_guide
6+
geekdocEditPath: edit/master/docs/ocis
7+
geekdocFilePath: troubleshooting.md
8+
---
9+
10+
{{< toc >}}
11+
12+
This document covers some of the issues that can happen during the release process.
13+
14+
Use this detailed copy/paste checklists for the PR when starting a backport.
15+
16+
## Backport Missing Commits
17+
18+
Once the `stable-x.y` branch has been created but work has been merged into master, these changes will not appear in the stable branch unless backporting is used.
19+
20+
{{< hint warning >}}
21+
* Any change applied to `stable-7.2` must be made **before** the tag for this release is created to be part of which is mandatory for any code change.
22+
* There is one exception. Changes applied for documentation purposes are accessed via the branch name by the doc process and not via the tag and therefore accessible to the documentation processes.
23+
{{< /hint >}}
24+
25+
Though any changes should ideally be targeted to the correct branch from the beginning, this may sometimes be impossible, especially for the following folder locations:
26+
27+
- `docs` and
28+
- `deployments/examples/ocis_full`
29+
30+
### Documentation
31+
32+
Changes to documentation must be present in the respective stable branch because the documentation process accesses the data for further processing. Follow these steps to apply all doc related changes from master to the stable branch **after** the tag has been created:
33+
34+
```
35+
https://owncloud.dev/ocis/releasing_guide/
36+
37+
* [ ] Check all relevant commits made to the master branch that are not in stable\
38+
`git log stable-7.2..master -- docs/`
39+
* [ ] Double check all changes if they apply to stable\
40+
`git diff stable-7.2..master -- docs/`
41+
* [ ] Create a new feature branch based on `stable-7.2`
42+
* [ ] Cherry pick missing commits
43+
* [ ] Create PR with leading `[docs-only]` against `stable-7.2`
44+
* [ ] Get PR approved **requires 2 approvals** and merge it
45+
* [ ] Delete feature branch
46+
```
47+
48+
### Deployment Example
49+
50+
Changes to the `ocis_full` deployment example are less critical. But as this is referenced by the documentation, changes must be present in the respective stable branch. Follow these steps to apply all deployment example related changes from master to the stable branch **after** the tag has been created:
51+
52+
#### Web Extensions
53+
54+
Update all dependencies and extension related data in the `web-extensions` repo and create for each extension a new release if applicapable.
55+
56+
#### ocis_full
57+
58+
Update the `ocis_full` deployment example as required in master which includes to update the versions of the web extensions used. Test the functionality if the example works.
59+
60+
Follow these steps to apply all `ocis_full` deployment example related changes from master to the stable branch:
61+
62+
```
63+
https://owncloud.dev/ocis/releasing_guide/
64+
65+
* [ ] Check all relevant commits made to the master branch that are not in stable\
66+
`git log stable-7.2..master -- deployments/examples/ocis_full/`
67+
* [ ] Double check all changes if they apply to stable\
68+
`git diff stable-7.2..master -- deployments/examples/ocis_full/`
69+
* [ ] Create a new feature branch based on `stable-7.2`
70+
* [ ] Cherry pick missing commits
71+
* [ ] Create PR with leading `[docs-only]` against `stable-7.2`
72+
* [ ] Get PR approved **requires 2 approvals** and merge it
73+
* [ ] Delete feature branch
74+
```

docs/services/_includes/.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*_configvars.md
22
*-example.yaml
3-
adoc/*adoc
4-
adoc/env-var-deltas/*adoc
3+
adoc/*.adoc
4+
adoc/env-var-deltas/*.adoc
5+
adoc/env-var-deltas/*.md

docs/services/_includes/_index.md

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
!_index.md
2+

0 commit comments

Comments
 (0)