From 31b4dea305444bf31238b232b6007606414ed529 Mon Sep 17 00:00:00 2001 From: Lionello Lunesu Date: Mon, 19 Feb 2024 15:24:40 -0800 Subject: [PATCH] feat: check SOURCE_DATE_EPOCH defaults to 315532800 --- README.md | 2 +- index.ts | 1 - package-lock.json | 2 +- package.json | 2 +- upload.ts | 7 ++++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 12b8a2c..15f45c5 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ export const fabricDNS = service.fabricDNS; * `DEFANG_FABRIC` - override the Defang Fabric service endpoint; defaults to prod * `DEFANG_FORCE_UP` - set this to `1` or `true` to force an update (for debugging only) * `DEFANG_DEBUG` - set this to `1` or `true` to enable debug logging - +* `SOURCE_DATE_EPOCH` - the modification time for the files in the build context; defaults to 315532800 (1980-01-01 00:00:00 UTC) ## Contributing diff --git a/index.ts b/index.ts index 5a7162a..6b47a16 100644 --- a/index.ts +++ b/index.ts @@ -11,7 +11,6 @@ import * as fabric from "./protos/io/defang/v1/fabric_grpc_pb"; import * as pb from "./protos/io/defang/v1/fabric_pb"; import { createTarball, uploadTarball } from "./upload"; import { - HttpUrl, deleteUndefined, isEqual, isValidUint, diff --git a/package-lock.json b/package-lock.json index 93327e6..7ca3047 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.8.17", - "@pulumi/pulumi": "~3.76.0", + "@pulumi/pulumi": "^3.76.0", "google-protobuf": "^3.21.2", "node-fetch": "^3.3.1", "tar": "^6.1.15" diff --git a/package.json b/package.json index 0fd070e..bd1ba43 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dependencies": { "@balena/dockerignore": "^1.0.2", "@grpc/grpc-js": "^1.8.17", - "@pulumi/pulumi": "~3.76.0", + "@pulumi/pulumi": "^3.76.0", "google-protobuf": "^3.21.2", "node-fetch": "^3.3.1", "tar": "^6.1.15" diff --git a/upload.ts b/upload.ts index c5288d6..bbe91ff 100644 --- a/upload.ts +++ b/upload.ts @@ -1,11 +1,11 @@ +import ignore from "@balena/dockerignore"; import { createReadStream, createWriteStream, promises, Stats } from "fs"; import { tmpdir } from "os"; import { join, normalize } from "path"; import { promises as stream } from "stream"; import * as tar from "tar"; -import ignore from "@balena/dockerignore"; -const SOURCE_DATE_EPOCH = 315532800; // 1980-01-01, same as nix-shell +const SOURCE_DATE_EPOCH = process.env["SOURCE_DATE_EPOCH"] ?? "315532800"; // defaults to 1980-01-01, same as nix-shell const defaultDockerIgnore = `# Default .dockerignore file for Defang **/.DS_Store **/.direnv @@ -56,6 +56,7 @@ export async function createTarball( } const filter = ignore({ ignorecase: false }).add(patterns).createFilter(); + const mtime = parseInt(SOURCE_DATE_EPOCH); // can be NaN const tempdir = await promises.mkdtemp(join(tmpdir(), "defang-build-")); console.debug(`Using temporary folder ${tempdir}`); const temppath = join(tempdir, "context.tar.gz"); @@ -71,7 +72,7 @@ export async function createTarball( (foundDockerfile ||= normalize(p) === dockerfile), filter(p) ), gzip: true, - mtime: new Date(SOURCE_DATE_EPOCH * 1000), // seconds -> milliseconds + mtime: isNaN(mtime) ? undefined : new Date(mtime * 1000), // seconds -> milliseconds portable: true, strict: true, } as tar.PackOptions, // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/67775