Skip to content
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
33 changes: 31 additions & 2 deletions .github/workflows/pr-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,35 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-24.04, ubuntu-latest]
os: [ubuntu-22.04, ubuntu-24.04, ubuntu-26.04, ubuntu-latest]
# Which apt architecture variant the cell's ceph packages come from.
# "default" means whatever the runner image defaults to: baseline
# amd64 on 22.04/24.04, but amd64v3 on 26.04 (cloud images enable
# APT::Architecture-Variants "amd64v3" out of the box). The extra
# (ubuntu-26.04, amd64) cell disables the variant so the Resolute
# baseline-amd64 reference DWARF JSONs get CI coverage too;
# dwarf-compare's build-id keying selects the matching reference
# automatically in both cells.
ceph-variant: [default]
include:
- os: ubuntu-26.04
ceph-variant: amd64
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: Force baseline amd64 packages (disable amd64v3 variant)
if: matrix.ceph-variant == 'amd64'
run: |
# apt.conf.d files parse in lexical order and #clear erases the
# option wherever an earlier file set it, so zz- wins over the
# cloud image's enablement snippet.
echo '#clear APT::Architecture-Variants;' | sudo tee /etc/apt/apt.conf.d/zz-disable-arch-variants
sudo apt-get update

- name: Ensure submodules are updated
run: |
sudo apt-get update
Expand All @@ -30,19 +51,27 @@ jobs:
- name: Unit test - verify dwarf output is consistent
run: ./tests/dwarf-compare.sh

# The remaining functional tests deploy MicroCeph (a snap) and trace its
# bundled ceph -- independent of the host apt variant -- so they only
# run in the default cell; the amd64 variant cell exists purely to give
# dwarf-compare coverage of the baseline-amd64 reference JSONs.
- name: Uninstall pre-installed Ceph packages
if: matrix.ceph-variant != 'amd64'
run: |
# Remove any pre-installed Ceph packages that might conflict with MicroCeph
sudo apt-get remove --purge -y ceph ceph-common ceph-osd python3-ceph-argparse python3-ceph-common 'ceph-libboost*' || true
sudo apt-get autoremove -y || true

- name: Functional test - verify osdtrace and radostrace with MicroCeph
if: matrix.ceph-variant != 'amd64'
run: sudo ./tests/functional-test-microceph.sh

- name: Embedded DWARF data test - verify integrity and E2E
if: matrix.ceph-variant != 'amd64'
run: sudo ./tests/functional-test-embedded-dwarf.sh

- name: Functional test - radostrace tracing a qemu VM on an RBD disk
if: matrix.ceph-variant != 'amd64'
run: sudo ./tests/functional-test-qemu-rbd.sh

build-ubuntu-cephadm:
Expand All @@ -51,7 +80,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04]
os: [ubuntu-22.04, ubuntu-24.04, ubuntu-26.04]
Comment thread
xtrusia marked this conversation as resolved.
release: [quincy, reef, squid, tentacle]
steps:
- name: Checkout code and submodules
Expand Down
16 changes: 16 additions & 0 deletions doc/dwarf-json-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,26 @@ Available versions include:
- Ubuntu 20.04: Ceph 15.2.17, 17.2.x series
- Ubuntu 22.04: Ceph 17.2.x, 19.2.x series
- Ubuntu 24.04: Ceph 19.2.x series
- Ubuntu 26.04: Ceph 20.2.x series (Tentacle), including `amd64v3`
architecture-variant builds

File naming format: `<version>_dwarf.json`
- Example: `17.2.6-0ubuntu0.22.04.2_dwarf.json`

When more than one build of the same package version is checked in — a
different architecture or microarchitecture variant — the filename carries an
architecture suffix to keep the builds distinct. Ubuntu 26.04's `amd64v3`
package variant (`APT::Architecture-Variants "amd64v3"`) keeps the same
version string and `dpkg` architecture as the baseline `amd64` build but is
compiled for `-march=x86-64-v3`, so it has different function addresses and a
different ELF build-id and needs its own DWARF JSON:
- Example: `osd-20.2.0-0ubuntu2_amd64v3_dwarf.json`
- Example: `20.2.0-0ubuntu2_amd64v3_dwarf.json`

The embedded-DWARF path matches the target by ELF build-id, so it selects the
right variant automatically; the suffix only disambiguates the checked-in
files and the `-i` import path.

### CentOS Stream

Location: `files/centos-stream/{radostrace,osdtrace}/`
Expand Down
Loading
Loading