Skip to content

Commit a8789ff

Browse files
authored
Fix for docker container event 'start' has deprecated fields in Docker v29.0.0 (#1103)
* Fix for docker container event 'start' has deprecated fields in Docker v29.0.0 * Re-trigger test * Adding a test workflow for docker v29. * Verify at the right place.
1 parent ac2d5b7 commit a8789ff

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Docker v29 Tests
2+
3+
on:
4+
push:
5+
branches: ['main', 'docker-v29-issue-old']
6+
pull_request:
7+
branches: ['main']
8+
9+
jobs:
10+
test-docker-v29:
11+
name: Docker v29.0.0 Compatibility
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- uses: actions/setup-node@v5
18+
with:
19+
node-version: '18.x'
20+
21+
- name: Install Docker v29.0.0
22+
run: |
23+
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io || true
24+
curl -fsSL https://get.docker.com -o get-docker.sh
25+
sudo VERSION=29.0.0 sh get-docker.sh
26+
sudo systemctl restart docker
27+
28+
- name: Verify Docker version, Install and Test
29+
run: |
30+
# Verify
31+
docker version
32+
DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')
33+
if [[ ! "$DOCKER_VERSION" =~ ^29\. ]]; then
34+
echo "ERROR: Expected Docker v29.x but got $DOCKER_VERSION"
35+
exit 1
36+
fi
37+
yarn install --frozen-lockfile
38+
yarn type-check
39+
yarn package
40+
yarn test-matrix --forbid-only src/test/cli.up.test.ts
41+
env:
42+
CI: true
43+

src/spec-node/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ export async function startEventSeen(params: DockerResolverParameters, labels: R
178178
if (line.trim()) {
179179
try {
180180
const info = JSON.parse(line);
181-
// Docker uses 'status', Podman 'Status'.
182-
if ((info.status || info.Status) === 'start' && await hasLabels(params, info, labels)) {
181+
// Docker uses 'status', Podman 'Status'. Docker v29.0.0 onwards use 'Action' as 'status' is deprecated.
182+
if ((info.status || info.Status || info.Action) === 'start' && await hasLabels(params, info, labels)) {
183183
eventsProcess.terminate();
184184
resolve();
185185
}

0 commit comments

Comments
 (0)