Skip to content

Commit c09bab8

Browse files
dfarrell07tpantelis
authored andcommitted
Rewrite RPM lockfile README for full arch support
Update documentation to reflect that all 4 architectures (x86_64, aarch64, ppc64le, s390x) are now working with standard RHEL repos. Changes: - Remove outdated "Current Status" table showing 403/EUS issues - Remove "s390x EUS Solution" section (no longer needed) - Remove "Blocking Issues" section for ppc64le - Add numbered step-by-step workflow - Add Konflux activation key upload instructions - Update expected output examples to show all arches OK - Reorganize into Prerequisites, Verification, Updating, Reference Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
1 parent 3313420 commit c09bab8

File tree

2 files changed

+117
-71
lines changed

2 files changed

+117
-71
lines changed

.rpm-lockfiles/README.md

Lines changed: 117 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2237
Red Hat VPN may be required.
2338

2439
```bash
25-
# If switching keys, unregister and clean first:
2640
sudo subscription-manager unregister
2741
sudo 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.

.rpm-lockfiles/check-repo-access.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,3 @@ echo
6868
echo -e "${B}Legend:${N} ${G}OK${N}=accessible ${R}403${N}=subscription lacks this arch"
6969
echo
7070
echo -e "${B}Note:${N} iperf3 and tcpdump are NOT in UBI - only in RHEL AppStream."
71-
echo " s390x: EUS repos are accessible (see README). ppc64le: blocked."

0 commit comments

Comments
 (0)