feat: add telemetry build provenance
Stamp official Docker builds with a low-cardinality provenance marker and report build_provenance/image_modified in anonymous telemetry. Local and fork builds default to custom, while official GitHub/GitLab release paths mark images as official.
This commit is contained in:
@@ -5,12 +5,18 @@ $imageNamespace = if ($env:IMAGE_NAMESPACE) { $env:IMAGE_NAMESPACE } else { "325
|
||||
$imageTag = if ($env:IMAGE_TAG) { $env:IMAGE_TAG } else { "local" }
|
||||
$imagePrefix = if ($env:IMAGE_PREFIX) { $env:IMAGE_PREFIX } else { "remnawave-minishop" }
|
||||
$dockerfile = if ($env:DOCKERFILE) { $env:DOCKERFILE } else { "deploy/docker/Dockerfile" }
|
||||
$buildProvenance = if ($env:REMNAWAVE_MINISHOP_BUILD_PROVENANCE) { $env:REMNAWAVE_MINISHOP_BUILD_PROVENANCE } else { "custom" }
|
||||
|
||||
function Build-Image {
|
||||
param([string]$Target)
|
||||
$image = "$imageRegistry/$imageNamespace/$imagePrefix-$Target`:$imageTag"
|
||||
Write-Host "Building $image" -ForegroundColor Cyan
|
||||
docker build -f $dockerfile --target $Target -t $image .
|
||||
docker build `
|
||||
-f $dockerfile `
|
||||
--target $Target `
|
||||
--build-arg "REMNAWAVE_MINISHOP_BUILD_PROVENANCE=$buildProvenance" `
|
||||
-t $image `
|
||||
.
|
||||
}
|
||||
|
||||
Build-Image backend
|
||||
|
||||
@@ -6,12 +6,18 @@ IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-3252a8}"
|
||||
IMAGE_TAG="${IMAGE_TAG:-local}"
|
||||
IMAGE_PREFIX="${IMAGE_PREFIX:-remnawave-minishop}"
|
||||
DOCKERFILE="${DOCKERFILE:-deploy/docker/Dockerfile}"
|
||||
REMNAWAVE_MINISHOP_BUILD_PROVENANCE="${REMNAWAVE_MINISHOP_BUILD_PROVENANCE:-custom}"
|
||||
|
||||
build_image() {
|
||||
local target="$1"
|
||||
local image="$IMAGE_REGISTRY/$IMAGE_NAMESPACE/$IMAGE_PREFIX-$target:$IMAGE_TAG"
|
||||
echo "Building $image"
|
||||
docker build -f "$DOCKERFILE" --target "$target" -t "$image" .
|
||||
docker build \
|
||||
-f "$DOCKERFILE" \
|
||||
--target "$target" \
|
||||
--build-arg "REMNAWAVE_MINISHOP_BUILD_PROVENANCE=$REMNAWAVE_MINISHOP_BUILD_PROVENANCE" \
|
||||
-t "$image" \
|
||||
.
|
||||
}
|
||||
|
||||
build_image backend
|
||||
|
||||
@@ -12,6 +12,7 @@ $imagePrefix = if ($env:IMAGE_PREFIX) { $env:IMAGE_PREFIX } else { "remnawave-mi
|
||||
$dockerfile = if ($env:DOCKERFILE) { $env:DOCKERFILE } else { "deploy/docker/Dockerfile" }
|
||||
$targetsRaw = if ($env:TARGETS) { $env:TARGETS } else { "backend,worker,frontend" }
|
||||
$targets = @($targetsRaw -split "[,;\s]+" | Where-Object { $_ })
|
||||
$buildProvenance = if ($env:REMNAWAVE_MINISHOP_BUILD_PROVENANCE) { $env:REMNAWAVE_MINISHOP_BUILD_PROVENANCE } else { "custom" }
|
||||
|
||||
function Get-ImageName {
|
||||
param(
|
||||
@@ -31,7 +32,12 @@ function Build-Image {
|
||||
}
|
||||
|
||||
Write-Host "Building $Target for: $($imageRegistries -join ', ')" -ForegroundColor Cyan
|
||||
docker build -f $dockerfile --target $Target @tagArgs .
|
||||
docker build `
|
||||
-f $dockerfile `
|
||||
--target $Target `
|
||||
--build-arg "REMNAWAVE_MINISHOP_BUILD_PROVENANCE=$buildProvenance" `
|
||||
@tagArgs `
|
||||
.
|
||||
}
|
||||
|
||||
function Push-Image {
|
||||
|
||||
@@ -7,6 +7,7 @@ IMAGE_TAG="${IMAGE_TAG:?Set IMAGE_TAG to the release tag you want to build and p
|
||||
IMAGE_PREFIX="${IMAGE_PREFIX:-remnawave-minishop}"
|
||||
DOCKERFILE="${DOCKERFILE:-deploy/docker/Dockerfile}"
|
||||
TARGETS="${TARGETS:-backend worker frontend}"
|
||||
REMNAWAVE_MINISHOP_BUILD_PROVENANCE="${REMNAWAVE_MINISHOP_BUILD_PROVENANCE:-custom}"
|
||||
|
||||
normalize_list() {
|
||||
local value="$1"
|
||||
@@ -34,7 +35,12 @@ build_image() {
|
||||
done
|
||||
|
||||
echo "Building $target for: ${registries[*]}"
|
||||
docker build -f "$DOCKERFILE" --target "$target" "${tags[@]}" .
|
||||
docker build \
|
||||
-f "$DOCKERFILE" \
|
||||
--target "$target" \
|
||||
--build-arg "REMNAWAVE_MINISHOP_BUILD_PROVENANCE=$REMNAWAVE_MINISHOP_BUILD_PROVENANCE" \
|
||||
"${tags[@]}" \
|
||||
.
|
||||
}
|
||||
|
||||
push_image() {
|
||||
|
||||
Reference in New Issue
Block a user