Skip to content

Commit 0cf0276

Browse files
committed
Make AWS upload optional
This allows testing channel mirroring locally without access to S3
1 parent 918d37c commit 0cf0276

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

mirror-nixos-branch.pl

+22-17
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
my $channelName = $ARGV[0];
1919
my $releaseUrl = $ARGV[1];
20+
my $useAWS = ($ENV{'AWS_DISABLE'} or "") eq "1";
2021

2122
die "Usage: $0 CHANNEL-NAME RELEASE-URL\n" unless defined $channelName && defined $releaseUrl;
2223

@@ -31,19 +32,21 @@
3132

3233
$ENV{'GIT_DIR'} = "/home/hydra-mirror/nixpkgs-channels";
3334

35+
my $bucket;
36+
if ($useAWS) {
37+
# S3 setup.
38+
my $aws_access_key_id = $ENV{'AWS_ACCESS_KEY_ID'} or die;
39+
my $aws_secret_access_key = $ENV{'AWS_SECRET_ACCESS_KEY'} or die;
3440

35-
# S3 setup.
36-
my $aws_access_key_id = $ENV{'AWS_ACCESS_KEY_ID'} or die;
37-
my $aws_secret_access_key = $ENV{'AWS_SECRET_ACCESS_KEY'} or die;
41+
my $s3 = Net::Amazon::S3->new(
42+
{ aws_access_key_id => $aws_access_key_id,
43+
aws_secret_access_key => $aws_secret_access_key,
44+
retry => 1,
45+
host => "s3-eu-west-1.amazonaws.com",
46+
});
3847

39-
my $s3 = Net::Amazon::S3->new(
40-
{ aws_access_key_id => $aws_access_key_id,
41-
aws_secret_access_key => $aws_secret_access_key,
42-
retry => 1,
43-
host => "s3-eu-west-1.amazonaws.com",
44-
});
45-
46-
my $bucket = $s3->bucket($bucketName) or die;
48+
$bucket = $s3->bucket($bucketName) or die;
49+
}
4750

4851

4952
sub fetch {
@@ -80,7 +83,7 @@ sub fetch {
8083
die "channel would go back in time from $curRelease to $releaseName, bailing out\n" if $d == 1;
8184
}
8285

83-
if ($bucket->head_key("$releasePrefix")) {
86+
if ($useAWS && $bucket->head_key("$releasePrefix")) {
8487
print STDERR "release already exists\n";
8588
} else {
8689
my $tmpDir = "/data/releases/tmp/release-$channelName/$releaseName";
@@ -175,7 +178,7 @@ sub fetch {
175178
my $basename = basename $fn;
176179
my $key = "$releasePrefix/" . $basename;
177180

178-
unless (defined $bucket->head_key($key)) {
181+
if ($useAWS && ! (defined $bucket->head_key($key))) {
179182
print STDERR "mirroring $fn to s3://$bucketName/$key...\n";
180183
$bucket->add_key_filename(
181184
$key, $fn,
@@ -196,11 +199,13 @@ sub fetch {
196199

197200
$html .= "</tbody></table></body></html>";
198201

199-
$bucket->add_key($releasePrefix, $html,
200-
{ content_type => "text/html" })
201-
or die $bucket->err . ": " . $bucket->errstr;
202+
if ($useAWS) {
203+
$bucket->add_key($releasePrefix, $html,
204+
{ content_type => "text/html" })
205+
or die $bucket->err . ": " . $bucket->errstr;
202206

203-
File::Path::remove_tree($tmpDir);
207+
File::Path::remove_tree($tmpDir);
208+
}
204209
}
205210

206211
# Prevent concurrent writes to the channels directory.

0 commit comments

Comments
 (0)