Skip to content

chore: Add product update templates #825

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Sep 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/add-product.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Add new Product
about: >-
This template contains instructions specific to adding a new product.
title: >-
tracking: Add new product <PRODUCT>
labels: []
projects: ['stackabletech/10']
assignees: ''
---

```[tasklist]
### Tasks
- [ ] Create a new top-level folder for the product. The name of the folder must
use the lowercase product name.
- [ ] Create a README.md file outlining special considerations required to
update or run the product. See existing README files as a guide of
reference.
- [ ] Add a `versions.py` file to the folder. Add all required key-value pairs.
- [ ] Add a new "Update Product" issue template in `.github/ISSUE_TEMPLATE/`
folder. See existing ones as a guide of reference.
- [ ] Add a new `dev_<PRODUCT>.yml` GitHub Action workflow in the
`.github/workflows` folder. Use existing local action whenever possible
or consider creating a new one when there is no fitting action available.
```

_Please consider updating this template if these instructions are wrong, or
could be made clearer._
74 changes: 30 additions & 44 deletions .github/ISSUE_TEMPLATE/pre-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,66 +11,52 @@ assignees: ''
This was created by an issue template: https://github.com/stackabletech/issues/issues/new/choose.
-->

<!-- Update this with the parent tracking issue for the release -->
Part of stackabletech/issues#xxx.

## Container Image Updates for Stackable Release XX.(X)X

> [!NOTE]
> Update the product versions based on what has been decided upon in the _Product Spreadsheet[^1]_.

[^1]: Currently this is a private spreadsheet

Replace the items in the task lists below with the applicable Pull Requests
Replace the items in the task lists below with the subsequent tracking issue.

<!--
Find any other image directories not covered by the list above:
Find templates for bases/products:

find . -name "versions.py" \
| cut -d/ -f2 \
find .github/ISSUE_TEMPLATE/update-*.md -printf "%f\n" \
| sort \
| xargs -I {} echo "- [ ] https://github.com/stackabletech/docker-images/tree/main/{}/versions.py"
| xargs -I {} echo "- [ ] https://github.com/stackabletech/docker-images/issues/new?template={}"
-->

<!-- todo: consider removing the ubi*-rust-builder from the release process. -->
```[tasklist]
### Product Container Images
- [ ] https://github.com/stackabletech/docker-images/tree/main/airflow/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/druid/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/hadoop/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/hbase/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/hello-world/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/hive/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/java-base/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/java-devel/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/kafka/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/kafka-testing-tools/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/kcat/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/krb5/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/nifi/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/omid/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/opa/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/spark-k8s/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/stackable-base/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/superset/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/testing-tools/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/tools/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/trino/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/trino-cli/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/vector/versions.py
- [ ] https://github.com/stackabletech/docker-images/tree/main/zookeeper/versions.py
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-base-java.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-base-stackable.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-base-ubi-rust-builders.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-base-vector.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-airflow.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-druid.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-hbase-phoenix-omid.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-hdfs.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-hive.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-kafka.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-nifi.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-opa.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-spark.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-superset.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-trino.md
- [ ] https://github.com/stackabletech/docker-images/issues/new?template=update-product-zookeeper.md
```

> [!NOTE]
> Generally you will only need to update the rust-toolchain version (`RUST_DEFAULT_TOOLCHAIN_VERSION`).

<!--
Find any other image directories not covered by the list above

comm -3 \
<(find . -name "Dockerfile" | cut -d/ -f2 | sort) \
<(find . -name "versions.py" | cut -d/ -f2 | sort) \
| xargs -I {} echo "- [ ] https://github.com/stackabletech/docker-images/tree/main/{}/Dockerfile"
-->

```[tasklist]
### Other Container Images
- [ ] https://github.com/stackabletech/docker-images/tree/main/ubi8-rust-builder/Dockerfile
- [ ] https://github.com/stackabletech/docker-images/tree/main/ubi9-rust-builder/Dockerfile
### Additional items which don't have a tracking issue
- [ ] hello-world
- [ ] krb5
- [ ] tools
- [ ] testing-tools
- [ ] statsd_exporter
```
78 changes: 78 additions & 0 deletions .github/ISSUE_TEMPLATE/update-base-java.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
name: Update Java Bases
about: >-
This template contains instructions specific to updating this product and/or
container image(s).
title: >-
chore(java-bases): Update container images ahead of Stackable Release XX.(X)X
labels: []
projects: ['stackabletech/10']
assignees: ''
---

Part of #xxx.

> [!TIP]
> Please add the `scheduled-for/20XX-XX` label.

<!-- markdownlint-disable-next-line MD028 -->
> [!IMPORTANT]
>
> - `java-base` uses [vector](https://github.com/stackabletech/docker-images/blob/main/vector/Dockerfile) and is used as a base for java products.
> - `java-devel` uses [stackable-base](https://github.com/stackabletech/docker-images/blob/main/stackable-base/Dockerfile) and is used to build java products.

Typically product updates will determine which version of Java is required, but
we should also make new versions of Java available for use.

> [!TIP]
> You can search for available java versions at [rpmfind.net], and search the
> term `openjdk-headless`.
> _It isn't perfect, as it will depend on what is available via microdnf._

```[tasklist]
### Update tasks
- Add any new versions of java to both `java-base/versions.py` and `java-devel/versions.py`
- Remove versions when there are no long any references (eg: `grep java- **/versions.py | grep "1.8.0"`)
```

```[tasklist]
### Related Pull Requests
- [ ] _Link to the docker-images PR (product update)_
```

<!--
Make this a regular list so it isn't easily editable from the rendered
description?
-->
```[tasklist]
### Acceptance
- [ ] Can build a product image that uses the new version(s)
- [ ] Both `java-base` and `java-devel` have the same Java versions in `versions.py`
- [ ] Kuttl smoke test passes locally for a product using the new Java version
- [ ] Release notes written in a comment below
- [ ] Applicable `release-note` label added to this issue
```

<details>
<summary>Testing instructions</summary>

```shell
# See the latest version at https://pypi.org/project/image-tools-stackabletech/
pip install image-tools-stackabletech==0.0.12

# Test a product image can build, eg: ZooKeeper
bake --product zookeeper=x.y.z # where x.y.z is a valid product version using the newly added Java version

kind load docker-image docker.stackable.tech/stackable/zookeeper:x.y.z-stackable0.0.0-dev

# Change directory into one of the operator repositories (eg: zookeeper-operator) and update the
# product version in tests/test-definition.yaml
./scripts/run-tests --test-suite smoke-latest # or similar
```

</details>

_Please consider updating this template if these instructions are wrong, or
could be made clearer._

[rpmfind.net]: https://rpmfind.net/linux/RPM/Development_Java.html
52 changes: 52 additions & 0 deletions .github/ISSUE_TEMPLATE/update-base-stackable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
name: Update Stackable Base
about: >-
This template contains instructions specific to updating this product and/or
container image(s).
title: >-
chore(stackable-base): Update container images ahead of Stackable Release XX.(X)X
labels: []
projects: ['stackabletech/10']
assignees: ''
---

Part of #xxx.

> [!TIP]
> Please add the `scheduled-for/20XX-XX` label.

```[tasklist]
### Update tasks
- [ ] Update UBI version hash in the Dockerfile (`FROM`)
- [ ] Update `RUST_DEFAULT_TOOLCHAIN_VERSION`
- [ ] Update `CARGO_CYCLONEDX_CRATE_VERSION`
- [ ] Update `CARGO_AUDITABLE_CRATE_VERSION`
- [ ] Update `PROTOC_VERSION`
- [ ] Update `CONFIG_UTILS_VERSION`
```

```[tasklist]
### Related Pull Requests
- [ ] _Link to the docker-images PR (product update)_
```

```[tasklist]
### Acceptance
- [ ] Can build the image locally
- [ ] Can build the vector image
```

<details>
<summary>Testing instructions</summary>

```shell
# See the latest version at https://pypi.org/project/image-tools-stackabletech/
pip install image-tools-stackabletech==0.0.12

bake --product vector=x.y.z # where x.y.z is a valid version
```

</details>

_Please consider updating this template if these instructions are wrong, or
could be made clearer._
61 changes: 61 additions & 0 deletions .github/ISSUE_TEMPLATE/update-base-ubi-rust-builders.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
name: Update UBI Rust Builders
about: >-
This template contains instructions specific to updating this product and/or
container image(s).
title: >-
chore(ubi-rust-builders): Update container images ahead of Stackable Release XX.(X)X
labels: []
projects: ['stackabletech/10']
assignees: ''
---

<!--
I don't think we should tie rust bumps to releases - they should be done as
developers need newer versions , which could be multiple times in a release.
If there are no bumps in a release, we can still rely on SecObserve and Renovate
to alert us to security vulnerabilities.
-->
Part of #xxx.

> [!TIP]
> Please add the `scheduled-for/20XX-XX` label.

```[tasklist]
### Update tasks
- [ ] Update UBI version hash in the Dockerfile (`FROM`)
- [ ] Update `RUST_DEFAULT_TOOLCHAIN_VERSION`
- [ ] Update `CARGO_CYCLONEDX_CRATE_VERSION`
- [ ] Update `CARGO_AUDITABLE_CRATE_VERSION`
- [ ] Update `PROTOC_VERSION`
```

```[tasklist]
### Related Pull Requests
- [ ] _Link to the docker-images PR (product update)_
- [ ] _Bump rust toolchain in operator-rs_
- [ ] _Bump rust toolchain in operator-templating_
```

```[tasklist]
### Acceptance
- Done for [ubi8-rust-builder/Dockerfile](https://github.com/stackabletech/docker-images/blob/main/ubi8-rust-builder/Dockerfile)
- Done for [ubi9-rust-builder/Dockerfile](https://github.com/stackabletech/docker-images/blob/main/ubi9-rust-builder/Dockerfile)
- [ ] Can build the image locally
- [ ] Can build an operator image
```

<details>
<summary>Testing instructions</summary>

```shell
docker build -t oci.stackable.tech/sdp/ubi9-rust-builder . -f ubi9-rust-builder/Dockerfile

# Change directory into the an operator repository and ensure the image can build
docker build . -f docker/Dockerfile
```

</details>

_Please consider updating this template if these instructions are wrong, or
could be made clearer._
73 changes: 73 additions & 0 deletions .github/ISSUE_TEMPLATE/update-base-vector.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
name: Update Vector
about: >-
This template contains instructions specific to updating this product and/or
container image(s).
title: >-
chore(vector): Update container images ahead of Stackable Release XX.(X)X
labels: []
projects: ['stackabletech/10']
assignees: ''
---

Part of #xxx.

> [!TIP]
> Please add the `scheduled-for/20XX-XX` label.

<!-- markdownlint-disable-next-line MD028 -->
> [!IMPORTANT]
>
> - Uses [stackable-base](https://github.com/stackabletech/docker-images/blob/main/stackable-base/Dockerfile).
> - Used as a base for [java-base](https://github.com/stackabletech/docker-images/blob/main/java-base/Dockerfile).

```[tasklist]
### Update tasks
- [ ] Update `versions.py` to reflect the agreed upon versions in the spreadsheet (including the removal of old versions).
- [ ] Upload new version (see `vector/upload_new_vector_version.sh`).
- [ ] Update `versions.py` to the latest supported version of JVM (base and devel).
- [ ] Update other dependencies if applicable (eg: inotify_tools, etc).
- [ ] Check other operators (getting_started / kuttl) for usage of the versions. Add the PR(s) to the list below.
- [ ] Update the version in demos. Add the PR(s) to the list below.
```

```[tasklist]
### Related Pull Requests
- [ ] _Link to the docker-images PR (product update)_
- [ ] _Link to the operator PR (getting_started / kuttl)_
- [ ] _Link to any other operator PRs (getting_started / kuttl)_
- [ ] _Link to demo PR (raise against the `next` branch)_
```

<!--
Make this a regular list so it isn't easily editable from the rendered
description?
-->
```[tasklist]
### Acceptance
- [ ] Can build image locally
- [ ] Kuttl smoke tests passes locally
- [ ] Release notes written in a comment below
- [ ] Applicable `release-note` label added to this issue
```

<details>
<summary>Testing instructions</summary>

```shell
# See the latest version at https://pypi.org/project/image-tools-stackabletech/
pip install image-tools-stackabletech==0.0.12

bake --product vector=x.y.z # where x.y.z is the new version added in this PR

kind load docker-image docker.stackable.tech/stackable/vector:x.y.z-stackable0.0.0-dev

# Change directory into one of the operator repositories and update the
# product version in tests/test-definition.yaml
./scripts/run-tests --test-suite smoke-latest # or similar
```

</details>

_Please consider updating this template if these instructions are wrong, or
could be made clearer._
Loading