mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-14 18:26:16 +02:00
maintainers/upload-release.pl: Handle 2.3 and 2.18 branches
This commit is contained in:
parent
751cb7cf51
commit
091f232896
1 changed files with 47 additions and 22 deletions
|
@ -11,6 +11,8 @@ use JSON::PP;
|
||||||
use LWP::UserAgent;
|
use LWP::UserAgent;
|
||||||
use Net::Amazon::S3;
|
use Net::Amazon::S3;
|
||||||
|
|
||||||
|
delete $ENV{'shell'}; # shut up a LWP::UserAgent.pm warning
|
||||||
|
|
||||||
my $evalId = $ARGV[0] or die "Usage: $0 EVAL-ID\n";
|
my $evalId = $ARGV[0] or die "Usage: $0 EVAL-ID\n";
|
||||||
|
|
||||||
my $releasesBucketName = "nix-releases";
|
my $releasesBucketName = "nix-releases";
|
||||||
|
@ -36,9 +38,9 @@ sub fetch {
|
||||||
my $evalUrl = "https://hydra.nixos.org/eval/$evalId";
|
my $evalUrl = "https://hydra.nixos.org/eval/$evalId";
|
||||||
my $evalInfo = decode_json(fetch($evalUrl, 'application/json'));
|
my $evalInfo = decode_json(fetch($evalUrl, 'application/json'));
|
||||||
#print Dumper($evalInfo);
|
#print Dumper($evalInfo);
|
||||||
my $flakeUrl = $evalInfo->{flake} or die;
|
my $flakeUrl = $evalInfo->{flake};
|
||||||
my $flakeInfo = decode_json(`nix flake metadata --json "$flakeUrl"` or die);
|
my $flakeInfo = decode_json(`nix flake metadata --json "$flakeUrl"` or die) if $flakeUrl;
|
||||||
my $nixRev = $flakeInfo->{revision} or die;
|
my $nixRev = ($flakeInfo ? $flakeInfo->{revision} : $evalInfo->{jobsetevalinputs}->{nix}->{revision}) or die;
|
||||||
|
|
||||||
my $buildInfo = decode_json(fetch("$evalUrl/job/build.x86_64-linux", 'application/json'));
|
my $buildInfo = decode_json(fetch("$evalUrl/job/build.x86_64-linux", 'application/json'));
|
||||||
#print Dumper($buildInfo);
|
#print Dumper($buildInfo);
|
||||||
|
@ -83,12 +85,19 @@ my $channelsBucket = $s3_us->bucket($channelsBucketName) or die;
|
||||||
sub getStorePath {
|
sub getStorePath {
|
||||||
my ($jobName, $output) = @_;
|
my ($jobName, $output) = @_;
|
||||||
my $buildInfo = decode_json(fetch("$evalUrl/job/$jobName", 'application/json'));
|
my $buildInfo = decode_json(fetch("$evalUrl/job/$jobName", 'application/json'));
|
||||||
return $buildInfo->{buildoutputs}->{$output or "out"}->{path} or die "cannot get store path for '$jobName'";
|
return $buildInfo->{buildoutputs}->{$output or "out"}->{path} // die "cannot get store path for '$jobName'";
|
||||||
}
|
}
|
||||||
|
|
||||||
sub copyManual {
|
sub copyManual {
|
||||||
my $manual = getStorePath("build.x86_64-linux", "doc");
|
my $manual;
|
||||||
print "$manual\n";
|
eval {
|
||||||
|
$manual = getStorePath("build.x86_64-linux", "doc");
|
||||||
|
};
|
||||||
|
if ($@) {
|
||||||
|
warn "$@";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
print "Manual: $manual\n";
|
||||||
|
|
||||||
my $manualNar = "$tmpDir/$releaseName-manual.nar.xz";
|
my $manualNar = "$tmpDir/$releaseName-manual.nar.xz";
|
||||||
print "$manualNar\n";
|
print "$manualNar\n";
|
||||||
|
@ -154,19 +163,33 @@ downloadFile("binaryTarball.x86_64-linux", "1");
|
||||||
downloadFile("binaryTarball.aarch64-linux", "1");
|
downloadFile("binaryTarball.aarch64-linux", "1");
|
||||||
downloadFile("binaryTarball.x86_64-darwin", "1");
|
downloadFile("binaryTarball.x86_64-darwin", "1");
|
||||||
downloadFile("binaryTarball.aarch64-darwin", "1");
|
downloadFile("binaryTarball.aarch64-darwin", "1");
|
||||||
downloadFile("binaryTarballCross.x86_64-linux.armv6l-unknown-linux-gnueabihf", "1");
|
eval {
|
||||||
downloadFile("binaryTarballCross.x86_64-linux.armv7l-unknown-linux-gnueabihf", "1");
|
downloadFile("binaryTarballCross.x86_64-linux.armv6l-unknown-linux-gnueabihf", "1");
|
||||||
|
};
|
||||||
|
warn "$@" if $@;
|
||||||
|
eval {
|
||||||
|
downloadFile("binaryTarballCross.x86_64-linux.armv7l-unknown-linux-gnueabihf", "1");
|
||||||
|
};
|
||||||
|
warn "$@" if $@;
|
||||||
downloadFile("installerScript", "1");
|
downloadFile("installerScript", "1");
|
||||||
|
|
||||||
# Upload docker images to dockerhub.
|
# Upload docker images to dockerhub.
|
||||||
my $dockerManifest = "";
|
my $dockerManifest = "";
|
||||||
my $dockerManifestLatest = "";
|
my $dockerManifestLatest = "";
|
||||||
|
my $haveDocker = 0;
|
||||||
|
|
||||||
for my $platforms (["x86_64-linux", "amd64"], ["aarch64-linux", "arm64"]) {
|
for my $platforms (["x86_64-linux", "amd64"], ["aarch64-linux", "arm64"]) {
|
||||||
my $system = $platforms->[0];
|
my $system = $platforms->[0];
|
||||||
my $dockerPlatform = $platforms->[1];
|
my $dockerPlatform = $platforms->[1];
|
||||||
my $fn = "nix-$version-docker-image-$dockerPlatform.tar.gz";
|
my $fn = "nix-$version-docker-image-$dockerPlatform.tar.gz";
|
||||||
|
eval {
|
||||||
downloadFile("dockerImage.$system", "1", $fn);
|
downloadFile("dockerImage.$system", "1", $fn);
|
||||||
|
};
|
||||||
|
if ($@) {
|
||||||
|
warn "$@" if $@;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$haveDocker = 1;
|
||||||
|
|
||||||
print STDERR "loading docker image for $dockerPlatform...\n";
|
print STDERR "loading docker image for $dockerPlatform...\n";
|
||||||
system("docker load -i $tmpDir/$fn") == 0 or die;
|
system("docker load -i $tmpDir/$fn") == 0 or die;
|
||||||
|
@ -194,21 +217,23 @@ for my $platforms (["x86_64-linux", "amd64"], ["aarch64-linux", "arm64"]) {
|
||||||
$dockerManifestLatest .= " --amend $latestTag"
|
$dockerManifestLatest .= " --amend $latestTag"
|
||||||
}
|
}
|
||||||
|
|
||||||
print STDERR "creating multi-platform docker manifest...\n";
|
if ($haveDocker) {
|
||||||
system("docker manifest rm nixos/nix:$version");
|
print STDERR "creating multi-platform docker manifest...\n";
|
||||||
system("docker manifest create nixos/nix:$version $dockerManifest") == 0 or die;
|
system("docker manifest rm nixos/nix:$version");
|
||||||
if ($isLatest) {
|
system("docker manifest create nixos/nix:$version $dockerManifest") == 0 or die;
|
||||||
|
if ($isLatest) {
|
||||||
print STDERR "creating latest multi-platform docker manifest...\n";
|
print STDERR "creating latest multi-platform docker manifest...\n";
|
||||||
system("docker manifest rm nixos/nix:latest");
|
system("docker manifest rm nixos/nix:latest");
|
||||||
system("docker manifest create nixos/nix:latest $dockerManifestLatest") == 0 or die;
|
system("docker manifest create nixos/nix:latest $dockerManifestLatest") == 0 or die;
|
||||||
}
|
}
|
||||||
|
|
||||||
print STDERR "pushing multi-platform docker manifest...\n";
|
print STDERR "pushing multi-platform docker manifest...\n";
|
||||||
system("docker manifest push nixos/nix:$version") == 0 or die;
|
system("docker manifest push nixos/nix:$version") == 0 or die;
|
||||||
|
|
||||||
if ($isLatest) {
|
if ($isLatest) {
|
||||||
print STDERR "pushing latest multi-platform docker manifest...\n";
|
print STDERR "pushing latest multi-platform docker manifest...\n";
|
||||||
system("docker manifest push nixos/nix:latest") == 0 or die;
|
system("docker manifest push nixos/nix:latest") == 0 or die;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Upload nix-fallback-paths.nix.
|
# Upload nix-fallback-paths.nix.
|
||||||
|
|
Loading…
Reference in a new issue