Skip to content

Commit ec9d20f

Browse files
authored
Updates Debian base image to Trixie (#494)
1 parent 825351f commit ec9d20f

File tree

6 files changed

+90
-26
lines changed

6 files changed

+90
-26
lines changed

.github/actions/build-and-tag-locally/action.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ runs:
5757
linux/i386)
5858
plaform_name="i386"
5959
;;
60-
linux/mips64le)
61-
plaform_name="mips64le"
62-
;;
6360
linux/ppc64le)
6461
plaform_name="ppc64le"
6562
;;

.github/workflows/pre-merge.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,13 @@ jobs:
3636
- linux/arm/v5
3737
- linux/arm/v6
3838
- linux/arm/v7
39-
- linux/mips64le
4039
- linux/ppc64le
4140
- linux/s390x
4241
- linux/arm64
4342
- linux/riscv64
4443
exclude:
45-
- distribution: alpine
46-
platform: linux/mips64le
4744
- distribution: alpine
4845
platform: linux/arm/v5
49-
- distribution: debian
50-
platform: linux/riscv64
5146
- distribution: debian
5247
platform: linux/arm/v6
5348
steps:

debian/Dockerfile

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

release-automation/src/stackbrew_generator/models.py

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import functools
44
import re
55
from enum import Enum
6-
from typing import List, Optional
6+
from typing import List, Optional, Tuple
77

8-
from pydantic import BaseModel, Field, validator
8+
from pydantic import BaseModel, Field
99

1010

1111
class DistroType(str, Enum):
@@ -15,6 +15,50 @@ class DistroType(str, Enum):
1515
DEBIAN = "debian"
1616

1717

18+
class DebianRelease:
19+
"""Debian release names."""
20+
21+
TRIXIE = "trixie"
22+
BOOKWORM = "bookworm"
23+
24+
25+
DEBIAN_TRIXIE_ARCHITECTURES: Tuple[str, ...] = (
26+
"amd64",
27+
"arm32v5",
28+
"arm32v7",
29+
"arm64v8",
30+
"i386",
31+
"riscv64",
32+
"ppc64le",
33+
"s390x",
34+
)
35+
DEBIAN_BOOKWORM_ARCHITECTURES: Tuple[str, ...] = (
36+
"amd64",
37+
"arm32v5",
38+
"arm32v7",
39+
"arm64v8",
40+
"i386",
41+
"mips64le",
42+
"ppc64le",
43+
"s390x",
44+
)
45+
ALPINE_ARCHITECTURES: Tuple[str, ...] = (
46+
"amd64",
47+
"arm32v6",
48+
"arm32v7",
49+
"arm64v8",
50+
"i386",
51+
"ppc64le",
52+
"riscv64",
53+
"s390x",
54+
)
55+
56+
DEBIAN_ARCHITECTURES: dict[str, Tuple[str, ...]] = {
57+
DebianRelease.TRIXIE: DEBIAN_TRIXIE_ARCHITECTURES,
58+
DebianRelease.BOOKWORM: DEBIAN_BOOKWORM_ARCHITECTURES,
59+
}
60+
61+
1862
@functools.total_ordering
1963
class RedisVersion(BaseModel):
2064
"""Represents a parsed Redis version.
@@ -213,14 +257,15 @@ class StackbrewEntry(BaseModel):
213257

214258
@property
215259
def architectures(self) -> List[str]:
216-
"""Get supported architectures based on distribution type."""
260+
"""Get supported architectures based on distribution type and version."""
217261
if self.distribution.type == DistroType.DEBIAN:
218-
return ["amd64", "arm32v5", "arm32v7", "arm64v8", "i386", "mips64le", "ppc64le", "s390x"]
262+
archs = DEBIAN_ARCHITECTURES.get(self.distribution.name, DEBIAN_TRIXIE_ARCHITECTURES)
263+
return list(archs)
219264
elif self.distribution.type == DistroType.ALPINE:
220-
return ["amd64", "arm32v6", "arm32v7", "arm64v8", "i386", "ppc64le", "riscv64", "s390x"]
265+
return list(ALPINE_ARCHITECTURES)
221266
else:
222-
# Fallback to debian architectures for unknown distributions
223-
return ["amd64", "arm32v5", "arm32v7", "arm64v8", "i386", "mips64le", "ppc64le", "s390x"]
267+
# Fallback to debian trixie architectures for unknown distributions
268+
return list(DEBIAN_TRIXIE_ARCHITECTURES)
224269

225270
def __str__(self) -> str:
226271
"""String representation in stackbrew format."""

release-automation/tests/test_models.py

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,17 @@
22

33
import pytest
44

5-
from stackbrew_generator.models import RedisVersion, Distribution, DistroType, Release, StackbrewEntry
5+
from stackbrew_generator.models import (
6+
ALPINE_ARCHITECTURES,
7+
DEBIAN_BOOKWORM_ARCHITECTURES,
8+
DEBIAN_TRIXIE_ARCHITECTURES,
9+
DebianRelease,
10+
Distribution,
11+
DistroType,
12+
RedisVersion,
13+
Release,
14+
StackbrewEntry,
15+
)
616

717

818
class TestRedisVersion:
@@ -248,10 +258,27 @@ def test_release_string_representation(self):
248258
class TestStackbrewEntry:
249259
"""Tests for StackbrewEntry model."""
250260

251-
def test_debian_architectures(self):
252-
"""Test that Debian distributions get the correct architectures."""
261+
def test_debian_trixie_architectures(self):
262+
"""Test that Debian trixie gets riscv64 architecture (no mips64le)."""
263+
version = RedisVersion.parse("8.4.0")
264+
distribution = Distribution(type=DistroType.DEBIAN, name=DebianRelease.TRIXIE)
265+
266+
entry = StackbrewEntry(
267+
tags=["8.4.0", "latest"],
268+
commit="abc123def456",
269+
version=version,
270+
distribution=distribution,
271+
git_fetch_ref="refs/tags/v8.4.0",
272+
)
273+
274+
assert entry.architectures == list(DEBIAN_TRIXIE_ARCHITECTURES)
275+
assert "riscv64" in entry.architectures
276+
assert "mips64le" not in entry.architectures
277+
278+
def test_debian_bookworm_architectures(self):
279+
"""Test that Debian bookworm gets mips64le architecture (no riscv64)."""
253280
version = RedisVersion.parse("8.2.1")
254-
distribution = Distribution(type=DistroType.DEBIAN, name="bookworm")
281+
distribution = Distribution(type=DistroType.DEBIAN, name=DebianRelease.BOOKWORM)
255282

256283
entry = StackbrewEntry(
257284
tags=["8.2.1", "latest"],
@@ -261,8 +288,9 @@ def test_debian_architectures(self):
261288
git_fetch_ref="refs/tags/v8.2.1"
262289
)
263290

264-
expected_architectures = ["amd64", "arm32v5", "arm32v7", "arm64v8", "i386", "mips64le", "ppc64le", "s390x"]
265-
assert entry.architectures == expected_architectures
291+
assert entry.architectures == list(DEBIAN_BOOKWORM_ARCHITECTURES)
292+
assert "mips64le" in entry.architectures
293+
assert "riscv64" not in entry.architectures
266294

267295
def test_alpine_architectures(self):
268296
"""Test that Alpine distributions get the correct architectures."""
@@ -277,8 +305,7 @@ def test_alpine_architectures(self):
277305
git_fetch_ref="refs/tags/v8.2.1"
278306
)
279307

280-
expected_architectures = ["amd64", "arm32v6", "arm32v7", "arm64v8", "i386", "ppc64le", "riscv64", "s390x"]
281-
assert entry.architectures == expected_architectures
308+
assert entry.architectures == list(ALPINE_ARCHITECTURES)
282309

283310
def test_stackbrew_entry_string_format(self):
284311
"""Test that StackbrewEntry formats correctly with architectures."""
@@ -296,7 +323,7 @@ def test_stackbrew_entry_string_format(self):
296323
output = str(entry)
297324

298325
# Check that it contains the expected Alpine architectures
299-
assert "amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x" in output
326+
assert ", ".join(ALPINE_ARCHITECTURES) in output
300327
assert "Tags: 8.2.1-alpine, alpine" in output
301328
assert "GitCommit: abc123def456" in output
302329
assert "GitFetch: refs/tags/v8.2.1" in output

release-automation/tests/test_update_stackbrew_file.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def test_update_stackbrew_file_basic(self):
3434
Directory: debian
3535
3636
Tags: 8.2.1-alpine, 8.2-alpine, 8-alpine, 8.2.1-alpine3.22, 8.2-alpine3.22, 8-alpine3.22, alpine, alpine3.22
37-
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
37+
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64, ppc64le, s390x
3838
GitCommit: old123commit
3939
GitFetch: refs/tags/v8.2.1
4040
Directory: alpine

0 commit comments

Comments
 (0)