mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-12 00:34:13 +01:00
CI: Improve build scripts
This commit is contained in:
@@ -2,49 +2,49 @@
|
||||
|
||||
set -e
|
||||
|
||||
PHOTOPRISM_DATE=$(date -u +%y%m%d)
|
||||
PHOTOPRISM_VERSION=$(git describe --always)
|
||||
BUILD_DATE=$(date -u +%y%m%d)
|
||||
BUILD_VERSION=$(git describe --always)
|
||||
|
||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||
echo "Please provide build mode and output file name" 1>&2
|
||||
echo "Usage: build.sh [debug|race|static|prod] [filename]" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $OS == "Windows_NT" ]]; then
|
||||
PHOTOPRISM_OS=win32
|
||||
BUILD_OS=win32
|
||||
if [[ $PROCESSOR_ARCHITEW6432 == "AMD64" ]]; then
|
||||
PHOTOPRISM_ARCH=amd64
|
||||
BUILD_ARCH=amd64
|
||||
else
|
||||
if [[ $PROCESSOR_ARCHITECTURE == "AMD64" ]]; then
|
||||
PHOTOPRISM_ARCH=amd64
|
||||
BUILD_ARCH=amd64
|
||||
fi
|
||||
if [[ $PROCESSOR_ARCHITECTURE == "x86" ]]; then
|
||||
PHOTOPRISM_ARCH=ia32
|
||||
BUILD_ARCH=ia32
|
||||
fi
|
||||
fi
|
||||
else
|
||||
PHOTOPRISM_OS=$(uname -s)
|
||||
PHOTOPRISM_ARCH=$(uname -m)
|
||||
BUILD_OS=$(uname -s)
|
||||
BUILD_ARCH=$(uname -m)
|
||||
fi
|
||||
|
||||
BUILD_ID=${BUILD_DATE}-${BUILD_VERSION}-${BUILD_OS}-${BUILD_ARCH}
|
||||
|
||||
echo "Building $1 binary..."
|
||||
echo "Version: PhotoPrism CE ${BUILD_ID}"
|
||||
|
||||
if [[ $1 == "debug" ]]; then
|
||||
echo "Building development binary..."
|
||||
go build -ldflags "-X main.version=${PHOTOPRISM_DATE}-${PHOTOPRISM_VERSION}-${PHOTOPRISM_OS}-${PHOTOPRISM_ARCH}-DEBUG" -o $2 cmd/photoprism/photoprism.go
|
||||
go build -ldflags "-X main.version=${BUILD_ID}-DEBUG" -o $2 cmd/photoprism/photoprism.go
|
||||
du -h $2
|
||||
echo "Done."
|
||||
elif [[ $1 == "race" ]]; then
|
||||
echo "Building with data race detector..."
|
||||
go build -race -ldflags "-X main.version=${PHOTOPRISM_DATE}-${PHOTOPRISM_VERSION}-${PHOTOPRISM_OS}-${PHOTOPRISM_ARCH}-DEBUG" -o $2 cmd/photoprism/photoprism.go
|
||||
go build -race -ldflags "-X main.version=${BUILD_ID}-DEBUG" -o $2 cmd/photoprism/photoprism.go
|
||||
du -h $2
|
||||
echo "Done."
|
||||
elif [[ $1 == "static" ]]; then
|
||||
echo "Building static production binary..."
|
||||
go build -a -v -ldflags "-linkmode external -extldflags \"-static -L /usr/lib -ltensorflow\" -s -w -X main.version=${PHOTOPRISM_DATE}-${PHOTOPRISM_VERSION}-${PHOTOPRISM_OS}-${PHOTOPRISM_ARCH}" -o $2 cmd/photoprism/photoprism.go
|
||||
go build -a -v -ldflags "-linkmode external -extldflags \"-static -L /usr/lib -ltensorflow\" -s -w -X main.version=${BUILD_ID}" -o $2 cmd/photoprism/photoprism.go
|
||||
du -h $2
|
||||
echo "Done."
|
||||
else
|
||||
echo "Building production binary..."
|
||||
go build -ldflags "-s -w -X main.version=${PHOTOPRISM_DATE}-${PHOTOPRISM_VERSION}-${PHOTOPRISM_OS}-${PHOTOPRISM_ARCH}" -o $2 cmd/photoprism/photoprism.go
|
||||
go build -ldflags "-s -w -X main.version=${BUILD_ID}" -o $2 cmd/photoprism/photoprism.go
|
||||
du -h $2
|
||||
echo "Done."
|
||||
fi
|
||||
|
||||
echo "Done."
|
||||
@@ -12,26 +12,26 @@ fi
|
||||
|
||||
NUMERIC='^[0-9]+$'
|
||||
GOPROXY=${GOPROXY:-'https://proxy.golang.org,direct'}
|
||||
DOCKER_TAG=$(date -u +%Y%m%d)
|
||||
BUILD_DATE=$(date -u +%y%m%d)
|
||||
|
||||
echo "docker/build: building photoprism/$1 from docker/${1/-//}$3/Dockerfile...";
|
||||
echo "Building image 'photoprism/$1' from docker/${1/-//}$3/Dockerfile...";
|
||||
|
||||
if [[ $1 ]] && [[ -z $2 || $2 == "preview" ]]; then
|
||||
echo "build tags: preview"
|
||||
echo "Build Tags: preview"
|
||||
|
||||
docker build \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-t photoprism/$1:preview \
|
||||
-f docker/${1/-//}$3/Dockerfile .
|
||||
elif [[ $2 =~ $NUMERIC ]]; then
|
||||
echo "build tags: $2, latest"
|
||||
echo "Build Tags: $2, latest"
|
||||
|
||||
if [[ $4 ]]; then
|
||||
echo "build params: $4"
|
||||
echo "Build Params: $4"
|
||||
fi
|
||||
|
||||
docker build $4\
|
||||
@@ -44,36 +44,36 @@ elif [[ $2 =~ $NUMERIC ]]; then
|
||||
-t photoprism/$1:$2 \
|
||||
-f docker/${1/-//}$3/Dockerfile .
|
||||
elif [[ $2 == *"preview"* ]]; then
|
||||
echo "build tags: $2"
|
||||
echo "Build Tags: $2"
|
||||
|
||||
if [[ $4 ]]; then
|
||||
echo "build params: $4"
|
||||
echo "Build Params: $4"
|
||||
fi
|
||||
|
||||
docker build $4\
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-t photoprism/$1:$2 \
|
||||
-f docker/${1/-//}$3/Dockerfile .
|
||||
else
|
||||
echo "build tags: $DOCKER_TAG-$2, $2"
|
||||
echo "Build Tags: $BUILD_DATE-$2, $2"
|
||||
|
||||
if [[ $4 ]]; then
|
||||
echo "build params: $4"
|
||||
echo "Build Params: $4"
|
||||
fi
|
||||
|
||||
docker build $4\
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-t photoprism/$1:$2 \
|
||||
-t photoprism/$1:$DOCKER_TAG-$2 \
|
||||
-t photoprism/$1:$BUILD_DATE-$2 \
|
||||
-f docker/${1/-//}$3/Dockerfile .
|
||||
fi
|
||||
|
||||
echo "docker/build: done"
|
||||
echo "Done."
|
||||
|
||||
@@ -10,10 +10,10 @@ fi
|
||||
|
||||
NUMERIC='^[0-9]+$'
|
||||
GOPROXY=${GOPROXY:-'https://proxy.golang.org,direct'}
|
||||
DOCKER_TAG=$(date -u +%Y%m%d)
|
||||
BUILD_DATE=$(date -u +%y%m%d)
|
||||
|
||||
# kill old multi builder if still alive.
|
||||
echo "docker/buildx-multi: removing existing multibuilder..."
|
||||
echo "Removing existing multibuilder..."
|
||||
docker buildx rm multibuilder 2>/dev/null
|
||||
|
||||
# wait 3 seconds.
|
||||
@@ -22,26 +22,27 @@ sleep 3
|
||||
# create new multibuilder.
|
||||
docker buildx create --name multibuilder --use || { echo 'failed'; exit 1; }
|
||||
|
||||
echo "docker/buildx-multi: building photoprism/$1 from docker/${1/-//}$4/Dockerfile..."
|
||||
echo "Starting 'photoprism/$1' multi-arch build from docker/${1/-//}$4/Dockerfile..."
|
||||
echo "Build Arch: $2"
|
||||
|
||||
if [[ $1 ]] && [[ $2 ]] && [[ -z $3 || $3 == "preview" ]]; then
|
||||
echo "build tags: preview"
|
||||
echo "Build Tags: preview"
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:preview \
|
||||
--push .
|
||||
elif [[ $3 =~ $NUMERIC ]]; then
|
||||
echo "build tags: $3, latest"
|
||||
echo "Build Tags: $3, latest"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
@@ -56,48 +57,48 @@ elif [[ $3 =~ $NUMERIC ]]; then
|
||||
-t photoprism/$1:$3 $5 \
|
||||
--push .
|
||||
elif [[ $4 ]] && [[ $3 == *"preview"* ]]; then
|
||||
echo "build tags: $3"
|
||||
echo "Build Tags: $3"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:$3 $5 \
|
||||
--push .
|
||||
elif [[ $4 ]]; then
|
||||
echo "build tags: $DOCKER_TAG-$3, $3"
|
||||
echo "Build Tags: $BUILD_DATE-$3, $3"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:$3 \
|
||||
-t photoprism/$1:$DOCKER_TAG-$3 $5 \
|
||||
-t photoprism/$1:$BUILD_DATE-$3 $5 \
|
||||
--push .
|
||||
else
|
||||
echo "build tags: $3"
|
||||
echo "Build Tags: $3"
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}/Dockerfile \
|
||||
@@ -105,7 +106,7 @@ else
|
||||
--push .
|
||||
fi
|
||||
|
||||
echo "docker/buildx-multi: removing multibuilder..."
|
||||
echo "Removing multibuilder..."
|
||||
docker buildx rm multibuilder
|
||||
|
||||
echo "docker/buildx-multi: done"
|
||||
echo "Done."
|
||||
|
||||
@@ -10,28 +10,29 @@ fi
|
||||
|
||||
NUMERIC='^[0-9]+$'
|
||||
GOPROXY=${GOPROXY:-'https://proxy.golang.org,direct'}
|
||||
DOCKER_TAG=$(date -u +%Y%m%d)
|
||||
BUILD_DATE=$(date -u +%y%m%d)
|
||||
|
||||
echo "docker/buildx: building photoprism/$1 from docker/${1/-//}$4/Dockerfile..."
|
||||
echo "Starting 'photoprism/$1' $2 build from docker/${1/-//}$4/Dockerfile..."
|
||||
echo "Build Arch: $2"
|
||||
|
||||
if [[ $1 ]] && [[ $2 ]] && [[ -z $3 || $3 == "preview" ]]; then
|
||||
echo "build tags: preview"
|
||||
echo "Build Tags: preview"
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:preview \
|
||||
--push .
|
||||
elif [[ $3 =~ $NUMERIC ]]; then
|
||||
echo "build tags: $3, latest"
|
||||
echo "Build Tags: $3, latest"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
@@ -46,40 +47,40 @@ elif [[ $3 =~ $NUMERIC ]]; then
|
||||
-t photoprism/$1:$3 $5 \
|
||||
--push .
|
||||
elif [[ $4 ]] && [[ $3 == *"preview"* ]]; then
|
||||
echo "build tags: $3"
|
||||
echo "Build Tags: $3"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:$3 $5 \
|
||||
--push .
|
||||
else
|
||||
echo "build tags: $DOCKER_TAG-$3, $3"
|
||||
echo "Build Tags: $BUILD_DATE-$3, $3"
|
||||
|
||||
if [[ $5 ]]; then
|
||||
echo "build params: $5"
|
||||
echo "Build Params: $5"
|
||||
fi
|
||||
|
||||
docker buildx build \
|
||||
--platform $2 \
|
||||
--pull \
|
||||
--no-cache \
|
||||
--build-arg BUILD_TAG=$DOCKER_TAG \
|
||||
--build-arg BUILD_TAG=$BUILD_DATE \
|
||||
--build-arg GOPROXY \
|
||||
--build-arg GODEBUG \
|
||||
-f docker/${1/-//}$4/Dockerfile \
|
||||
-t photoprism/$1:$3 \
|
||||
-t photoprism/$1:$DOCKER_TAG-$3 $5 \
|
||||
-t photoprism/$1:$BUILD_DATE-$3 $5 \
|
||||
--push .
|
||||
fi
|
||||
|
||||
echo "docker/buildx: done"
|
||||
echo "Done."
|
||||
|
||||
Reference in New Issue
Block a user