Skip to content

Commit

Permalink
Add new okd-c9s and ocp-rhel-9.4 variants
Browse files Browse the repository at this point in the history
To make introducing the base RHCOS/SCOS images safer, let's create two
new variants: `okd-c9s` and `ocp-rhel-9.4`. These variants are cloned
from the existing `c9s` and `rhel-9.4` variants to start.

The new variants will track the status quo: building SCOS/RHCOS with the
OpenShift components baked in (hence the `okd`/`ocp` prefixes). This is
what the pipeline will keep building.

Meanwhile, what is currently the `c9s` and rhel-9.4` variants will
become the new base SCOS/RHCOS streams containing *purely* CentOS
Stream/RHEL content.

The default variant is still `ocp-rhel-9.4` for now.
  • Loading branch information
jlebon committed May 24, 2024
1 parent 9ea3765 commit 2474419
Show file tree
Hide file tree
Showing 11 changed files with 251 additions and 12 deletions.
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ To support building both a RHEL-based and a CentOS Stream-based CoreOS, the
coreos-assembler concept of [variants] is used. The following variants are
supported:

- `rhel-9.4`: RHEL 9.4-based CoreOS; including OpenShift components.
- `c9s`: CentOS Stream-based CoreOS, including OpenShift components. This
- `rhel-9.4`: Clone of `ocp-rhel-9.4` for now.
- `ocp-rhel-9.4`: RHEL 9.4-based CoreOS; including OpenShift components.
- `c9s`: Clone of `okd-c9s` for now.
- `okd-c9s`: CentOS Stream-based CoreOS, including OpenShift components. This
currently includes some packages from RHEL because not all packages required
by OpenShift are provided in CentOS Stream.

The default variant is `rhel-9.4`.
The default variant is `ocp-rhel-9.4`.

## Reporting issues

Expand Down
12 changes: 6 additions & 6 deletions ci/prow-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -305,36 +305,36 @@ main() {
prepare_repos
;;
"build" | "init-and-build-default") # TODO: change prow job to use init-and-build-default
cosa_init "rhel-9.4"
cosa_init "ocp-rhel-9.4"
cosa_build
;;
"rhcos-cosa-prow-pr-ci")
setup_user
cosa_init "rhel-9.4"
cosa_init "ocp-rhel-9.4"
cosa_build
kola_test_qemu
;;
"rhcos-9-build-test-qemu")
setup_user
cosa_init "rhel-9.4"
cosa_init "ocp-rhel-9.4"
cosa_build
kola_test_qemu
;;
"rhcos-9-build-test-metal")
setup_user
cosa_init "rhel-9.4"
cosa_init "ocp-rhel-9.4"
cosa_build
kola_test_metal
;;
"scos-9-build-test-qemu")
setup_user
cosa_init "c9s"
cosa_init "okd-c9s"
cosa_build
kola_test_qemu
;;
"scos-9-build-test-metal")
setup_user
cosa_init "c9s"
cosa_init "okd-c9s"
cosa_build
kola_test_metal
;;
Expand Down
1 change: 1 addition & 0 deletions extensions-ocp-rhel-9.4.yaml
1 change: 1 addition & 0 deletions extensions-okd-c9s.yaml
2 changes: 1 addition & 1 deletion extensions.yaml
1 change: 1 addition & 0 deletions image-ocp-rhel-9.4.yaml
1 change: 1 addition & 0 deletions image-okd-c9s.yaml
2 changes: 1 addition & 1 deletion image.yaml
110 changes: 110 additions & 0 deletions manifest-ocp-rhel-9.4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Manifest for RHCOS based on RHEL 9.4

rojig:
license: MIT
name: rhcos
summary: OpenShift 4

variables:
osversion: "rhel-9.4"

# Include manifests common to all RHEL and CentOS Stream versions and manifest
# common to RHEL 9 & C9S variants
include:
- common.yaml
- packages-openshift.yaml

# Starting from here, everything should be specific to RHCOS based on RHEL 9.4 content

repos:
- rhel-9.4-baseos
- rhel-9.4-appstream
- rhel-9.4-fast-datapath
# Include RHCOS 9 repo for oc, kubelet
- rhel-9.4-server-ose-4.17

# We include hours/minutes to avoid version number reuse
automatic-version-prefix: "417.94.<date:%Y%m%d%H%M>"
# This ensures we're semver-compatible which OpenShift wants
automatic-version-suffix: "-"
# Keep this is sync with the version in postprocess
mutate-os-release: "4.17"

postprocess:
- |
#!/usr/bin/env bash
set -xeo pipefail
# Tweak /usr/lib/os-release
grep -v -e "OSTREE_VERSION" -e "OPENSHIFT_VERSION" /etc/os-release > /usr/lib/os-release.rhel
(
. /etc/os-release
cat > /usr/lib/os-release <<EOF
NAME="${NAME} CoreOS"
ID="rhcos"
ID_LIKE="rhel fedora"
VERSION="${OSTREE_VERSION}"
VERSION_ID="${OPENSHIFT_VERSION}"
VARIANT="CoreOS"
VARIANT_ID=coreos
PLATFORM_ID="${PLATFORM_ID}"
PRETTY_NAME="${NAME} CoreOS ${OSTREE_VERSION}"
ANSI_COLOR="${ANSI_COLOR}"
CPE_NAME="${CPE_NAME}::coreos"
HOME_URL="${HOME_URL}"
DOCUMENTATION_URL="https://docs.okd.io/latest/welcome/index.html"
BUG_REPORT_URL="https://access.redhat.com/labs/rhir/"
REDHAT_BUGZILLA_PRODUCT="OpenShift Container Platform"
REDHAT_BUGZILLA_PRODUCT_VERSION="${OPENSHIFT_VERSION}"
REDHAT_SUPPORT_PRODUCT="OpenShift Container Platform"
REDHAT_SUPPORT_PRODUCT_VERSION="${OPENSHIFT_VERSION}"
OPENSHIFT_VERSION="${OPENSHIFT_VERSION}"
RHEL_VERSION=9.4
OSTREE_VERSION="${OSTREE_VERSION}"
EOF
)
rm -f /etc/os-release
ln -s ../usr/lib/os-release /etc/os-release
# Tweak /etc/system-release, /etc/system-release-cpe & /etc/redhat-release
(
. /etc/os-release
cat > /usr/lib/system-release-cpe <<EOF
${CPE_NAME}
EOF
cat > /usr/lib/system-release <<EOF
${NAME} release ${VERSION_ID}
EOF
rm -f /etc/system-release-cpe /etc/system-release /etc/redhat-release
ln -s /usr/lib/system-release-cpe /etc/system-release-cpe
ln -s /usr/lib/system-release /etc/system-release
ln -s /usr/lib/system-release /etc/redhat-release
)
# Tweak /usr/lib/issue
cat > /usr/lib/issue <<EOF
\S \S{VERSION_ID}
EOF
rm -f /etc/issue /etc/issue.net
ln -s /usr/lib/issue /etc/issue
ln -s /usr/lib/issue /etc/issue.net
# Packages that are only in RHCOS and not in SCOS or that have special
# constraints that do not apply to SCOS
packages:
# We include the generic release package and tweak the os-release info in a
# post-process script
- redhat-release

# Packages pinned to specific repos in RHCOS 9
repo-packages:
- repo: rhel-9.4-appstream
packages:
- nss-altfiles
- repo: rhel-9.4-server-ose-4.17
packages:
- conmon-rs
- cri-o
- cri-tools
- openshift-clients
- openshift-kubelet
123 changes: 123 additions & 0 deletions manifest-okd-c9s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Manifest for CentOS Stream CoreOS (SCOS)

rojig:
license: MIT
name: scos
summary: OKD 4

variables:
osversion: "c9s"

# Include manifests common to all RHEL and CentOS Stream versions and manifest
# common to RHEL 9 & C9S variants
include:
- common.yaml
- packages-openshift.yaml
- overrides-c9s.yaml

# Starting from here, everything should be specific to SCOS

# CentOS Stream 9 repos + internal repos for now
repos:
- c9s-baseos
- c9s-appstream
# CentOS Extras Common repo for SIG RPM GPG keys
- c9s-extras-common
# CentOS NFV SIG repo for openvswitch
- c9s-sig-nfv
# CentOS Cloud SIG repo for cri-o, cri-tools and conmon-rs
- c9s-sig-cloud-okd
# Include RHCOS 9 repo for oc, hyperkube
- rhel-9.4-server-ose-4.17

# We include hours/minutes to avoid version number reuse
automatic-version-prefix: "417.9.<date:%Y%m%d%H%M>"
# This ensures we're semver-compatible which OpenShift wants
automatic-version-suffix: "-"
# Keep this is sync with the version in postprocess
mutate-os-release: "4.17"

postprocess:
- |
#!/usr/bin/env bash
set -xeo pipefail
# Tweak /usr/lib/os-release
grep -v -e "OSTREE_VERSION" -e "OPENSHIFT_VERSION" /etc/os-release > /usr/lib/os-release.stream
(
. /etc/os-release
cat > /usr/lib/os-release <<EOF
NAME="${NAME} CoreOS"
ID="scos"
ID_LIKE="rhel fedora"
VERSION="${OSTREE_VERSION}"
VERSION_ID="${OPENSHIFT_VERSION}"
VARIANT="CoreOS"
VARIANT_ID=coreos
PLATFORM_ID="${PLATFORM_ID}"
PRETTY_NAME="${NAME} CoreOS ${OSTREE_VERSION}"
ANSI_COLOR="${ANSI_COLOR}"
CPE_NAME="${CPE_NAME}::coreos"
HOME_URL="${HOME_URL}"
DOCUMENTATION_URL="https://docs.okd.io/latest/welcome/index.html"
BUG_REPORT_URL="https://access.redhat.com/labs/rhir/"
REDHAT_BUGZILLA_PRODUCT="OpenShift Container Platform"
REDHAT_BUGZILLA_PRODUCT_VERSION="${OPENSHIFT_VERSION}"
REDHAT_SUPPORT_PRODUCT="OpenShift Container Platform"
REDHAT_SUPPORT_PRODUCT_VERSION="${OPENSHIFT_VERSION}"
OPENSHIFT_VERSION="${OPENSHIFT_VERSION}"
OSTREE_VERSION="${OSTREE_VERSION}"
EOF
)
rm -f /etc/os-release
ln -s ../usr/lib/os-release /etc/os-release
# Tweak /etc/system-release, /etc/system-release-cpe & /etc/redhat-release
(
. /etc/os-release
cat > /usr/lib/system-release-cpe <<EOF
${CPE_NAME}
EOF
cat > /usr/lib/system-release <<EOF
${NAME} release ${VERSION_ID}
EOF
rm -f /etc/system-release-cpe /etc/system-release /etc/redhat-release
ln -s /usr/lib/system-release-cpe /etc/system-release-cpe
ln -s /usr/lib/system-release /etc/system-release
ln -s /usr/lib/system-release /etc/redhat-release
)
# Tweak /usr/lib/issue
cat > /usr/lib/issue <<EOF
\S \S{VERSION_ID}
EOF
rm -f /etc/issue /etc/issue.net
ln -s /usr/lib/issue /etc/issue
ln -s /usr/lib/issue /etc/issue.net
# Packages that are only in SCOS and not in RHCOS or that have special
# constraints that do not apply to RHCOS
packages:
# We include the generic release package and tweak the os-release info in a
# post-proces script
- centos-stream-release
# RPM GPG keys for CentOS SIG repos
- centos-release-cloud-common
- centos-release-nfv-common
- centos-release-virt-common

# Packages pinned to specific repos in SCOS 9
repo-packages:
# We always want the kernel from BaseOS
- repo: c9s-baseos
packages:
- kernel
- repo: c9s-appstream
packages:
# We want the one shipping in C9S, not the equivalently versioned one in RHAOS
- nss-altfiles
# Use the new containers/toolbox
- toolbox
# The one shipping in C9S is temporarily lower versioned, so be explicit
# https://github.com/openshift/os/issues/1505
- containers-common
2 changes: 1 addition & 1 deletion manifest.yaml

0 comments on commit 2474419

Please sign in to comment.