Skip to content

Commit 4eba836

Browse files
smcmkclaude
andcommitted
feat: add centos to the OS matrix
Adds os/centos (CentOS Stream 9, quay.io/centos/centos:stream9), generated from a new _dev/_os/centos Copier source that mirrors rhel's, sharing the existing redhat Ansible family (same dnf package list works unmodified on both). Verified end-to-end locally: Ansible provisioning and the web-browserlibrary RF suite both pass headless in the container. The shared redhat.yml caveat comment was Rocky-Linux-10-specific and would have been misleading for centos: CentOS Stream 9's AppStream repo actually ships Xvfb and Google Noto Color Emoji (verified live), unlike Rocky 10. Reworded it to state what's true of each release instead of overclaiming. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent a1fcc5a commit 4eba836

41 files changed

Lines changed: 1095 additions & 55 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/run-suites.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,15 @@ jobs:
160160
# ── Stage 3: os content type (provision + verify + report) ────────────────
161161
# Independent of the detect-changes/test pair above: exactly one job per OS
162162
# family, added deliberately one epic at a time (Story 1.5 adds debian;
163-
# Stories 2.2/3.2/4.2 each add one more matrix entry), never auto-detected
164-
# from a directory listing the way the examples/templates matrix is.
163+
# Stories 2.2/3.2/4.2 each add one more matrix entry; centos is a later
164+
# addition sharing the redhat family with rhel), never auto-detected from a
165+
# directory listing the way the examples/templates matrix is.
165166
os:
166167
runs-on: ubuntu-latest
167168
strategy:
168169
fail-fast: false
169170
matrix:
170-
slug: [debian, ubuntu, rhel, sles]
171+
slug: [debian, ubuntu, rhel, sles, centos]
171172

172173
steps:
173174
- uses: actions/checkout@v4

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ Proof that each target OS can be provisioned from a stock install (via Ansible,
9696

9797
| OS | Base Image | Repository Link |
9898
|---|---|---|
99+
| [centos](os/centos) | `quay.io/centos/centos:stream9` | [try out](https://github.com/robotmk/os-centos) |
99100
| [debian](os/debian) | `debian:13` | [try out](https://github.com/robotmk/os-debian) |
100101
| [rhel](os/rhel) | `rockylinux/rockylinux:10` | [try out](https://github.com/robotmk/os-rhel) |
101102
| [sles](os/sles) | `registry.suse.com/suse/sle15:15.7` | [try out](https://github.com/robotmk/os-sles) |

_dev/_ansible/roles/browser-deps/tasks/redhat.yml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
- name: Install Chromium/Playwright system dependencies (Rocky Linux 10 / EL10 package names)
2+
- name: Install Chromium/Playwright system dependencies (RHEL-family / EL9+EL10 package names)
33
ansible.builtin.dnf:
44
name:
55
- alsa-lib
@@ -30,16 +30,19 @@
3030
state: present
3131
update_cache: true
3232

33-
- name: Record Rocky's missing Xvfb/emoji/unifont packages as a caveat, not a silent gap
33+
- name: Record this family's missing Xvfb/emoji/unifont packages as a caveat, not a silent gap
3434
ansible.builtin.set_fact:
3535
install_report_caveats:
3636
browser-deps:
3737
- >-
38-
Rocky Linux 10's base+AppStream repos do not provide Xvfb, Google
39-
Noto Color Emoji, or GNU Unifont (Noto Color Emoji is available via
40-
EPEL, which this role deliberately does not enable, to stay close
41-
to a stock install). Headless Chromium does not require Xvfb to
42-
launch, so this does not block verification, but pages relying on
43-
color emoji or Unifont's broad Unicode coverage may render with
44-
fallback glyphs. Liberation fonts and scalable X fonts ARE
45-
available here, unlike SLES's free BCI image.
38+
GNU Unifont is not available in this family's base+AppStream repos
39+
without enabling EPEL, which this role deliberately does not, to
40+
stay close to a stock install (verified on both Rocky Linux 10 and
41+
CentOS Stream 9). Xvfb and Google Noto Color Emoji availability
42+
varies by release: absent from Rocky Linux 10's repos (also
43+
EPEL-gated there), but present in CentOS Stream 9's AppStream.
44+
Headless Chromium does not require Xvfb to launch, so none of this
45+
blocks verification, but pages relying on color emoji or Unifont's
46+
broad Unicode coverage may render with fallback glyphs on Rocky.
47+
Liberation fonts and scalable X fonts ARE available on both, unlike
48+
SLES's free BCI image.

_dev/_os/centos/copier.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
_subdirectory: template
2+
_answers_file: .copier-answers.yml

_dev/_os/centos/populate.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
populate:
2+
- src: _dev/_ansible
3+
dst: .devcontainer/ansible
4+
exclude:
5+
- "*.pyc"
6+
- "__pycache__"
7+
8+
- src: templates/web-browserlibrary
9+
dst: tests/web-browserlibrary
10+
exclude:
11+
- "*.pyc"
12+
- "__pycache__"
13+
- "output"
14+
- "log.html"
15+
- "report.html"
16+
- "output.xml"
17+
- "browser"
18+
- "playwright-log.txt"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# This file is managed by Copier.
2+
# Do NOT edit manually. To regenerate: task generate
3+
_src_path: {{ _copier_conf.src_path }}
4+
_commit: {{ _copier_conf.commit or 'none' }}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[defaults]
2+
callbacks_enabled = install_report
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "os-centos",
3+
"image": "{{ centos_image }}",
4+
"customizations": {
5+
"vscode": {
6+
"extensions": [
7+
"ms-python.python",
8+
"d-biehl.robotcode",
9+
"redhat.ansible"
10+
]
11+
}
12+
},
13+
"onCreateCommand": "bash .devcontainer/oncreate.sh",
14+
"postCreateCommand": "bash .devcontainer/postcreate.sh"
15+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Provision OS environment
3+
hosts: localhost
4+
connection: local
5+
roles:
6+
- browser-deps

_dev/config/versions.env

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ SLES_IMAGE=registry.suse.com/suse/sle15:15.7
2020
# rhel slug is a documented exception to the generic <SLUG-UPPER>_IMAGE
2121
# derivation: the key is RHEL_COMPAT_IMAGE, not RHEL_IMAGE, because the pinned
2222
# image is a RHEL-compatible substitute (Rocky Linux), not RHEL itself.
23-
RHEL_COMPAT_IMAGE=rockylinux/rockylinux:10
23+
RHEL_COMPAT_IMAGE=rockylinux/rockylinux:10
24+
CENTOS_IMAGE=quay.io/centos/centos:stream9

0 commit comments

Comments
 (0)