Skip to content

Commit 7b8da7a

Browse files
committed
ci: run CI and e2e on ubuntu-26.04, with infra-e2e importing kind images per platform
Docker 29 (ubuntu-26.04 runners) uses the containerd image store, where a pulled multi-platform image holds only the host platform; importing every platform into kind failed for the OAP image ("content digest ... not found"). Saved for one platform, the archive also lists the image's referrers, such as attestations, at its top level, and the containerd 1.7 kindest/node:v1.28.15 these cases pin imports each one as an image, which failed for the Rover image ("mismatched image rootfs and manifest layers"). infra-e2e now saves only the node platform and leaves the referrers out of the archive (apache/skywalking-infra-e2e#150, #151), so the e2e cases leave the ubuntu-24.04 pin #205 added. The CI and e2e jobs name ubuntu-26.04 rather than ubuntu-latest: ubuntu-latest jobs sat queued with no runner while jobs naming ubuntu-24.04 or ubuntu-26.04 started within seconds. The istio mesh spec accepts `UNKNOWN` as the service the MESH header opens on. Since the e2e OAP pin moved past apache/skywalking#14135 (#204), OAP reads the Kubernetes metadata of a new pod address in the background, so bookinfo's first calls count under `UNKNOWN`; in the first minute of traffic that burst can rank first by calls per minute, and the header then picks it. It failed so on main at ed6171d (ubuntu-24.04) as well as here.
1 parent ed6171d commit 7b8da7a

3 files changed

Lines changed: 14 additions & 14 deletions

File tree

‎.github/workflows/ci.yaml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
# container action that would otherwise sit behind the toolchain setup the
3333
# build job spends its first half-minute on.
3434
name: License header
35-
runs-on: ubuntu-latest
35+
runs-on: ubuntu-26.04
3636
timeout-minutes: 10
3737
steps:
3838
- uses: actions/checkout@v6
@@ -48,7 +48,7 @@ jobs:
4848
# the setup cost eight times over. Steps run cheapest-first so a lint or
4949
# type error reports before the package build starts.
5050
name: Build and check
51-
runs-on: ubuntu-latest
51+
runs-on: ubuntu-26.04
5252
timeout-minutes: 30
5353
steps:
5454
- uses: actions/checkout@v6
@@ -252,7 +252,7 @@ jobs:
252252
# `test/e2e/script/env` pins, on an ephemeral port, and stops it after. No
253253
# service container to declare and no port to collide with.
254254
name: BanyanDB client IT
255-
runs-on: ubuntu-latest
255+
runs-on: ubuntu-26.04
256256
timeout-minutes: 20
257257
steps:
258258
- uses: actions/checkout@v6
@@ -278,7 +278,7 @@ jobs:
278278
if: always() && !cancelled()
279279
name: Required
280280
needs: [license-header, build-and-check, banyandb-client-it]
281-
runs-on: ubuntu-latest
281+
runs-on: ubuntu-26.04
282282
timeout-minutes: 5
283283
steps:
284284
- name: Check upstream jobs

‎.github/workflows/e2e.yaml‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,7 @@ concurrency:
225225
jobs:
226226
e2e:
227227
name: ${{ matrix.case.name }}
228-
# Not ubuntu-latest: on ubuntu-26.04, kind cannot load the multi-platform
229-
# OAP image into its node (`ctr images import --all-platforms`: content
230-
# digest not found), so the kind cases fail before any test runs.
231-
runs-on: ubuntu-24.04
228+
runs-on: ubuntu-26.04
232229
timeout-minutes: 45
233230
strategy:
234231
# One case failing must not cancel the others: when several go red at
@@ -292,7 +289,7 @@ jobs:
292289
run: make -C test/e2e images
293290

294291
- name: ${{ matrix.case.name }}
295-
uses: apache/skywalking-infra-e2e@68bbdec303cf2d3df9f2353f970f91938b52f674
292+
uses: apache/skywalking-infra-e2e@ed91851a723f7d09e99742f28835ee91758e0c2b
296293
with:
297294
e2e-file: $GITHUB_WORKSPACE/${{ matrix.case.config }}
298295
# Container logs land here. On a red run they answer the first
@@ -330,7 +327,7 @@ jobs:
330327
name: E2E Required
331328
if: always() && !cancelled()
332329
needs: [e2e]
333-
runs-on: ubuntu-latest
330+
runs-on: ubuntu-26.04
334331
steps:
335332
- name: Assert every case passed
336333
run: |

‎test/e2e/playwright/specs/fixture.ts‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,12 @@ export const MESH_LAYER = 'mesh';
135135
export const MESH_PEERS = ['productpage', 'reviews', 'details'];
136136

137137
/**
138-
* EVERY service this fixture's mesh can produce: all four bookinfo workloads
139-
* plus the ingress gateway bookinfo is reached through, which ALS reports
140-
* like any other mesh workload.
138+
* EVERY service this fixture's mesh can produce: all four bookinfo workloads,
139+
* the ingress gateway bookinfo is reached through, which ALS reports like any
140+
* other mesh workload, and `UNKNOWN`. OAP reads the Kubernetes metadata of a
141+
* new pod address in the background rather than waiting for it
142+
* (apache/skywalking#14135), so bookinfo's first calls count under `UNKNOWN`,
143+
* and in the first minute of traffic that burst can rank above every workload.
141144
*
142145
* Distinct from MESH_PEERS on purpose. `ratings` is reached only via
143146
* reviews-v2/v3, so whether it exists in a given window depends on which
@@ -146,7 +149,7 @@ export const MESH_PEERS = ['productpage', 'reviews', 'details'];
146149
* follows OAP's ordering and changes between runs, so anything asserting on
147150
* the SELECTED service must accept the full set.
148151
*/
149-
export const MESH_SERVICES = [...MESH_PEERS, 'ratings', 'istio-ingressgateway'];
152+
export const MESH_SERVICES = [...MESH_PEERS, 'ratings', 'istio-ingressgateway', 'UNKNOWN'];
150153

151154
/**
152155
* The SAME workload in the MESH_DP layer, which names services

0 commit comments

Comments
 (0)