Skip to content

Commit ec3d09e

Browse files
committed
Move push stuff from push_all to build_all not to override multi-platform builds
1 parent 06afd8d commit ec3d09e

1 file changed

Lines changed: 25 additions & 5 deletions

File tree

bin/build_all.pl

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
);
3232
my %aliases_rev;
3333

34-
my %use_builder = map {$_ => 1} qw( noble plucky questing );
34+
my %multi_platform = map {$_ => 1} qw( noble plucky questing );
3535

3636
while (my ($alias, $name) = each %aliases) {
3737
$aliases_rev{$name} ||= [];
@@ -52,14 +52,34 @@
5252
}
5353
my $dockerfile = path("$name/Dockerfile")->slurp;
5454
my ($from) = $dockerfile =~ /^FROM (\S+)/;
55-
system("docker pull $from");
56-
if ($builder && $use_builder{$name}) {
55+
system("docker pull $from") if $no_cache;
56+
if ($builder && $multi_platform{$name}) {
5757
system("docker buildx build --builder $builder --platform linux/amd64,linux/arm64 $name $tags --output=type=image" . ($no_cache ? " --no-cache" : "") . ($push ? " --push" : "") . " 2>&1 | tee log/build_$name.log");
5858
} else {
59-
system("docker build $name $tags" . ($no_cache ? " --no-cache" : "") . " 2>&1 | tee log/build_$name.log");
59+
if ($push) {
60+
if ($multi_platform{$name}) {
61+
say "$name requires multi-platform build to push";
62+
} else {
63+
my $id = `docker images movabletype/test:$name --no-trunc --format '{{.ID}}'`;
64+
chomp $id;
65+
die "Image not found: $name" unless $id;
66+
67+
say "$name : $id";
68+
69+
my @tags = map { s/ .*//r }
70+
grep { /$id/ }
71+
split /\n/, `docker images -f 'reference=movabletype/test:*' --no-trunc --format '{{.Tag}} {{.ID}}'`;
72+
73+
for my $tag (@tags) {
74+
system("docker push movabletype/test:$tag");
75+
}
76+
}
77+
} else {
78+
system("docker build $name $tags" . ($no_cache ? " --no-cache" : "") . " 2>&1 | tee log/build_$name.log");
79+
}
6080
}
6181
my $log = path("log/build_$name.log")->slurp;
62-
if ($log =~ m!(naming to docker.io/movabletype/test:$name (\S+ )?done|Successfully built)!) {
82+
if ($log =~ m!(naming to docker.io/movabletype/test:$name (\S+ )?done|Successfully built|exporting manifest list .* done)!) {
6383
if ($log =~ /No package (.+) available/) {
6484
rename "log/build_$name.log" => "log/build_warn_$name.log";
6585
} else {

0 commit comments

Comments
 (0)