Skip to content

Commit 8288ac0

Browse files
authored
Operator-Controller Release Guide (operator-framework#149)
Operator-Controller Release Guide Adds a release guide for the operator-controller, and fills in a bit more detail on the README. Also adds an installation command to the release script to install prereqs from OLM (CatSrc). Signed-off-by: dtfranz <[email protected]>
1 parent 4d6757a commit 8288ac0

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

.goreleaser.yml

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ release:
6363
## Installation
6464
6565
```bash
66+
curl -L -s https://github.com/operator-framework/operator-lifecycle-manager/releases/download/{{ .Env.OLM_V0_VERSION }}/install.sh | bash -s {{ .Env.OLM_V0_VERSION }}
6667
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/{{ .Env.CERT_MGR_VERSION }}/cert-manager.yaml
6768
kubectl wait --for=condition=Available --namespace=cert-manager deployment/cert-manager-webhook --timeout=60s
6869
kubectl apply -f https://github.com/operator-framework/rukpak/releases/latest/download/rukpak.yaml

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export IMAGE_TAG ?= devel
77
export GO_BUILD_TAGS ?= upstream
88
export CERT_MGR_VERSION ?= v1.9.0
99
export GORELEASER_VERSION ?= v1.16.2
10+
export OLM_V0_VERSION ?= v0.24.0
1011
export WAIT_TIMEOUT ?= 60s
1112
IMG?=$(IMAGE_REPO):$(IMAGE_TAG)
1213

README.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
# operator-controller
2-
// TODO(user): Add simple overview of use/purpose
2+
The operator-controller is the central component of Operator Lifecycle Manager (OLM) v1. It extends Kubernetes with an API through which users can install Operators.
33

44
## Description
5-
// TODO(user): An in-depth paragraph about your project and overview of use
5+
OLM v1 is the follow-up to OLM v0, located [here](https://github.com/operator-framework/operator-lifecycle-manager). It consists of four different components, including this one, which are as follows:
6+
* operator-controller
7+
* [deppy](https://github.com/operator-framework/deppy)
8+
* [rukpak](https://github.com/operator-framework/rukpak)
9+
* [catalogd](https://github.com/operator-framework/catalogd)
610

711
## Getting Started
812
You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster.

RELEASE.md

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Release Process for OLM v1
2+
3+
## Choosing version increment
4+
When making releases for operator-controller, version increments should adhere strictly to Semantic Versioning. In short:
5+
* Major: API breaking change(s) are made.
6+
* Minor: Backwards compatible features are added.
7+
* Patch: Backwards compatible bug fix is made.
8+
9+
When a major or minor release being made is associated with one or more milestones, please ensure that all related features have been merged into the `main` branch before continuing.
10+
11+
## Creating the release
12+
Note that throughout this guide, the `upstream` remote refers to the `operator-framework/operator-controller` repository.
13+
14+
The release process differs slightly based on whether a patch or major/minor release is being made.
15+
16+
### Patch Release
17+
#### Step 1
18+
In this example we will be creating a new patch release from version `v1.2.3`, on the branch `release-v1.2`.
19+
First ensure that the release branch has been updated on remote with the changes from the patch, then perform the following:
20+
```bash
21+
git fetch upstream release-v1.2
22+
git pull release-v1.2
23+
git checkout release-v1.2
24+
```
25+
26+
#### Step 2
27+
Create a new tag, incrementing the patch number from the previous version. In this case, we'll be incrementing from `v1.2.3` to `v1.2.4`:
28+
```bash
29+
## Previous version was v1.2.3, so we bump the patch number up by one
30+
git tag v1.2.4
31+
git push upstream v1.2.4
32+
```
33+
34+
### Major/Minor Release
35+
#### Step 1
36+
Create a release branch from `main` branch for the target release. Follow the pattern `release-<MAJOR>.<MINOR>` when naming the branch; for example: `release-v1.2`. The patch version should not be included in the branch name in order to facilitate an easier patch process.
37+
```bash
38+
git checkout main
39+
git fetch upstream main
40+
git pull main
41+
git checkout -b release-v1.2
42+
git push upstream release-v1.2
43+
```
44+
45+
#### Step 2
46+
Create and push our tag for the current release.
47+
```bash
48+
git tag v1.2.0
49+
git push upstream v1.2.0
50+
```
51+
52+
### Post-Steps
53+
Once the tag has been pushed the release action should run automatically. You can view the progress [here](https://github.com/operator-framework/operator-lifecycle-manager/actions/workflows/goreleaser.yaml). When finished, the release should then be available on the [releases page](https://github.com/operator-framework/operator-controller/releases).

0 commit comments

Comments
 (0)