@@ -4,127 +4,174 @@ This directory contains RPM lockfiles and tooling for Konflux hermetic container
44
55** Directory Structure:**
66
7- - Scripts and docs (this README) live on ` devel `
7+ - Scripts and docs (this README) live on the ` devel ` branch
88- Component configs (` <component>/rpms.in.yaml ` , ` .repo ` files) live on release branches
99
1010## Prerequisites
1111
12- Red Hat entitlement certificates are required to run the lockfile scripts.
12+ ### 1. Red Hat Customer Portal Login ID
1313
14- ### Activation Key Setup
14+ This is a separate account from your normal Red Hat SSO/Kerberos credentials.
15+ The login ID must follow a specific naming convention. See
16+ [ Slack thread] ( https://redhat-internal.slack.com/archives/CKPULPXL3/p1767769916219789 )
17+ for details on how to request one.
1518
16- Go to [ Red Hat Console] ( https://console.redhat.com ) → RHEL → Inventory → System Configuration →
17- Activation Keys. These are RHEL activation keys; BaseOS and AppStream are auto-enabled for
18- supported arches.
19+ ### 2. Create Activation Key
1920
20- ### Register Your System
21+ Log in with your Customer Portal credentials (not SSO) and create an activation key:
22+
23+ https://console.redhat.com/insights/connector/activation-keys/
24+
25+ ** Note:** The activation key name is used as a secret. Keep the random default
26+ and add something like ` yourname-yourproject-randomstring ` .
27+
28+ ### 3. Add Repos to Activation Key
29+
30+ RHEL 9 BaseOS and AppStream are auto-enabled - these are all that nettest requires.
31+
32+ ** Note:** UBI repos are public and don't require activation keys, but nettest
33+ needs ` iperf3 ` and ` tcpdump ` which are only available in RHEL AppStream.
34+
35+ ### 4. Register Your System
2136
2237Red Hat VPN may be required.
2338
2439``` bash
25- # If switching keys, unregister and clean first:
2640sudo subscription-manager unregister
2741sudo subscription-manager clean
28-
29- sudo subscription-manager register --org=" YOUR_ORG_ID" --activationkey=" YOUR_KEY_NAME"
42+ sudo subscription-manager register --org=' <ORG_ID>' --activationkey=' <KEY_NAME>'
3043```
3144
32- ### Verify Access
45+ Find your org ID on the [ activation key page] ( https://console.redhat.com/insights/connector/activation-keys/ ) .
46+
47+ ### 5. Registry Login
3348
3449``` bash
35- .rpm-lockfiles/check-repo-access.sh
50+ podman login registry.redhat.io
3651```
3752
38- ## Current Status
39-
40- | Component | x86_64 | aarch64 | ppc64le | s390x |
41- | -----------| --------| ---------| ---------| -------|
42- | nettest | OK | OK | 403 | EUS |
53+ This uses your Red Hat account (not the new Customer Portal account).
4354
44- ** Legend: **
55+ ## Verification
4556
46- - OK = working with standard RHEL 9 repos
47- - EUS = working with Extended Update Support repos (see s390x EUS Solution)
48- - 403 = repos inaccessible with current subscription (see Blocking Issues)
57+ ### 6. Verify Repository Access
4958
50- ## s390x EUS Solution
51-
52- Standard RHEL 9 repos return 403 for s390x with self-serve subscriptions. However,
53- ** EUS (Extended Update Support) repos are accessible** and contain all required packages.
59+ ``` bash
60+ .rpm-lockfiles/check-repo-access.sh
61+ ```
5462
55- The solution (implemented on release branches for nettest ):
63+ Expected output (all OK ):
5664
57- 1 . Add ` skip_if_unavailable = 1 ` to standard repo entries (allows graceful fallback)
58- 2 . Add s390x-specific EUS repo entries pointing to ` content/eus/rhel9/9.4/s390x/ `
59- 3 . Add s390x to ` rpms.in.yaml ` arches and regenerate lockfile
60- 4 . Add ` linux/s390x ` to Tekton pipeline build-platforms
65+ ``` text
66+ Shipyard RPM Dependency Status
67+ ===============================
6168
62- See release branch ` .rpm-lockfiles/nettest/ ` for working implementation.
69+ Component Packages Repository x86_64 aarch64 ppc64le s390x
70+ --------- ------------------------------ ---------------- ------ ------- ------- -----
71+ nettest iperf3,tcpdump RHEL 9 AppStream OK OK OK OK
72+ nettest bind-utils,curl,iproute,... UBI (public) OK OK OK OK
6373
64- ## Blocking Issues
74+ Legend: OK=accessible 403=subscription lacks this arch
75+ ```
6576
66- ### ppc64le (all components )
77+ ### 7. Verify Packages (Optional )
6778
68- All RHEL 9 repos for ppc64le return 403 with self-serve activation keys:
69- - Standard repos: 403
70- - EUS repos: 403
71- - TUS/E4S/AUS repos: 403
79+ ``` bash
80+ .rpm-lockfiles/verify-packages.sh < branch>
81+ ```
7282
73- May require OpenShift Platform Plus or enterprise subscription with ppc64le entitlements.
83+ Runs dnf inside a container to verify each package is available for each architecture.
84+ Branch is required since component configs live on release branches, not devel.
7485
75- ## Component Details
86+ Expected output:
7687
77- ### nettest
88+ ``` text
89+ nettest (repos: rhel-9-for-appstream-rpms rhel-9-for-baseos-rpms)
90+ x86_64 OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream iproute@rhel-baseos iputils@rhel-baseos nmap-ncat@rhel-appstream tcpdump@rhel-appstream
91+ aarch64 OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream iproute@rhel-baseos iputils@rhel-baseos nmap-ncat@rhel-appstream tcpdump@rhel-appstream
92+ ppc64le OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream iproute@rhel-baseos iputils@rhel-baseos nmap-ncat@rhel-appstream tcpdump@rhel-appstream
93+ s390x OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream iproute@rhel-baseos iputils@rhel-baseos nmap-ncat@rhel-appstream tcpdump@rhel-appstream
94+ ```
7895
79- | Package | Available In |
80- | ---------| --------------|
81- | iperf3, tcpdump | RHEL 9 AppStream |
82- | bind-utils, curl, iproute, iputils, nmap-ncat | UBI (public) |
96+ ## Updating Lockfiles
8397
84- iperf3 and tcpdump are ** not in UBI ** - only RHEL 9 AppStream. s390x can use EUS repos; ppc64le requires a different subscription.
98+ ### 8. Generate Lockfiles
8599
86- ## Verification Scripts
100+ ``` bash
101+ .rpm-lockfiles/update-lockfile.sh < branch> [component]
102+ ```
87103
88- ### Quick Access Check
104+ Generates ` rpms.lock.yaml ` from component configs on the specified branch.
89105
106+ Example:
90107``` bash
91- .rpm-lockfiles/check-repo-access .sh
108+ .rpm-lockfiles/update-lockfile .sh release-0.19 nettest
92109```
93110
94- Example output (actual results depend on your subscription):
111+ ### 9. Update Tekton Pipeline Architectures
95112
96- ``` text
97- Component Packages Repository x86_64 aarch64 ppc64le s390x
98- --------- ------------------------------ ---------------- ------ ------- ------- -----
99- nettest iperf3,tcpdump RHEL 9 AppStream OK OK 403 403
100- nettest bind-utils,curl,iproute,... UBI (public) OK OK OK OK
113+ Ensure the ` build-platforms ` in ` .tekton/<component>-*-push.yaml ` and
114+ ` .tekton/<component>-*-pull-request.yaml ` match the arches in ` rpms.in.yaml ` .
115+
116+ Example from a push pipeline:
117+ ``` yaml
118+ - name : build-platforms
119+ value :
120+ - linux/x86_64
121+ - linux/arm64
122+ - linux/ppc64le
123+ - linux/s390x
101124` ` `
102125
103- ** Note:** nettest s390x shows 403 because the script tests standard repos. EUS repos
104- are accessible and can be configured in ` .repo ` files - see s390x EUS Solution.
126+ **Note:** Tekton uses ` arm64` while lockfiles use `aarch64` - these refer to the same architecture.
127+
128+ # ## 10. Upload Activation Key to Konflux
105129
106- ### Detailed Package Verification
130+ Once local validation is complete, create a secret in your Konflux tenant namespace
131+ so builds can access subscription content.
107132
133+ Login to the Konflux cluster :
108134` ` ` bash
109- .rpm-lockfiles/verify-packages.sh [branch]
135+ oc login --web https://api.kflux-prd-rh02.0fk9.p1.openshiftapps.com:6443/
110136` ` `
111137
112- Example output (actual results depend on your subscription and branch configuration):
113-
114- ``` text
115- nettest (repos: rhel-9-for-appstream-rpms rhel-9-for-baseos-rpms rhel-9-for-s390x-appstream-eus-rpms ...)
116- x86_64 OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream ...
117- aarch64 OK: bind-utils@rhel-appstream curl@rhel-baseos iperf3@rhel-appstream ...
118- ppc64le NO REPO ACCESS (subscription lacks ppc64le)
119- s390x OK: bind-utils@rhel-appstream-eus curl@rhel-baseos-eus iperf3@rhel-appstream-eus ...
138+ Check current state (record existing values before making changes) :
139+ ` ` ` bash
140+ oc get secret activation-key -n submariner-tenant -o yaml 2>/dev/null || echo "Secret does not exist yet"
120141` ` `
121142
122- ### Update Lockfiles
143+ Create or update the activation key secret :
144+ ` ` ` bash
145+ oc create secret generic activation-key -n submariner-tenant \
146+ --from-literal=org='<ORG_ID>' \
147+ --from-literal=activationkey='<KEY_NAME>' \
148+ --dry-run=client -o yaml | oc apply -f -
149+ ` ` `
123150
151+ Verify both fields match what you set :
124152` ` ` bash
125- .rpm-lockfiles/update-lockfile.sh < branch> [component]
153+ oc get secret activation-key -n submariner-tenant -o jsonpath='{.data.org}' | base64 -d && echo
154+ oc get secret activation-key -n submariner-tenant -o jsonpath='{.data.activationkey}' | base64 -d && echo
126155` ` `
127156
128- Generates ` rpms.lock.yaml ` from component configs on the specified branch.
157+ Confirm the output matches `<ORG_ID>` and `<KEY_NAME>` from the create command above.
158+
159+ Using the default name `activation-key` applies it to all builds in the namespace.
160+
161+ See [Konflux activation key docs](https://konflux-ci.dev/docs/building/activation-keys-subscription/).
162+
163+ ---
164+
165+ # # Reference
166+
167+ # ## Component Details
168+
169+ # ### nettest
170+
171+ | Package | Source |
172+ |---------|--------|
173+ | iperf3, tcpdump | RHEL 9 AppStream |
174+ | bind-utils, curl, iproute, iputils, nmap-ncat | RHEL 9 BaseOS |
129175
130- ** Additional prerequisite:** ` podman login registry.redhat.io `
176+ **Note:** `iperf3` and `tcpdump` are NOT available in UBI repos - only in RHEL AppStream.
177+ This is why nettest requires RHEL subscription entitlements.
0 commit comments