4 Commits
3 changed files with 37 additions and 43 deletions
+24 -24
View File
@@ -1,34 +1,34 @@
ARG BUILDPLATFORM=$BUILDPLATFORM ARG BUILDPLATFORM=$BUILDPLATFORM
ARG GO_VERSION=$GO_VERSION ARG GO_VERSION=1.24.1
ARG VERSION=$VERSION
FROM --platform=$BUILDPLATFORM golang:$GO_VERSION AS psiphon_builder FROM --platform=$BUILDPLATFORM golang:$GO_VERSION AS psiphon_builder
WORKDIR /go WORKDIR /go
LABEL stage=builder LABEL stage=builder
ARG BUILDOS ARG BUILDOS
ARG BUILDARCH ARG BUILDARCH
ARG TARGETS ARG TARGETS
ENV DIR=/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core \ ARG PSIPHON_VERSION
GO111MODULE=off \ ENV DIR=/go/src/github.com/Psiphon-Labs/psiphon-tunnel-core
CGO_ENABLED=0 ENV GO111MODULE=off
SHELL ["/bin/bash", "-c"] ENV CGO_ENABLED=0
RUN TARGET_PALTFORMS=${TARGETS:-"$BUILDOS/$BUILDARCH"} && \ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
mkdir -p ${DIR} && \ RUN <<__SCRIPT__
curl -sL https://github.com/Psiphon-Labs/psiphon-tunnel-core/archive/refs/tags/v${VERSION}.tar.gz | \ TARGET_PALTFORMS=${TARGETS:-"$BUILDOS/$BUILDARCH"}
tar xz -C ${DIR} --strip-components=1 && \ TARGET_PALTFORMS=${TARGET_PALTFORMS//,/ }
(IFS=','; for PLATFORM in $TARGET_PALTFORMS; \ mkdir -p ${DIR}
do \ curl -sL https://github.com/Psiphon-Labs/psiphon-tunnel-core/archive/refs/tags/v${PSIPHON_VERSION}.tar.gz | tar xz -C ${DIR} --strip-components=1
OS=${PLATFORM%%/*} && \ for PLATFORM in $TARGET_PALTFORMS
ARCH=${PLATFORM#*/} && \ do
ARCH=${ARCH%/*} && \ OS=${PLATFORM%%/*}
VERSION=${PLATFORM##*/} && \ ARCH=${PLATFORM#*/}
TARGETVARIANT=${VERSION/$ARCH/} && \ ARCH=${ARCH%/*}
VERSION=${TARGETVER/v/} && \ VERSION=${PLATFORM##*/}
GOOS=${OS} GOARCH=${ARCH} go install -a -tags netgo \ TARGETVARIANT=${VERSION/$ARCH/}
-ldflags '-w -extldflags "-static"' \ VERSION=${TARGETVER/v/}
github.com/Psiphon-Labs/psiphon-tunnel-core/ConsoleClient && \ GOOS=${OS} GOARCH=${ARCH} go install -a -tags netgo -ldflags '-w -extldflags "-static"' github.com/Psiphon-Labs/psiphon-tunnel-core/ConsoleClient
BINARY=$(find /go/bin/* -name "ConsoleClient*") && \ BINARY=$(find /go/bin/* -name "ConsoleClient*")
mv ${BINARY} /go/psiphon_${OS}_${ARCH}_${TARGETVARIANT}; \ mv ${BINARY} /go/psiphon_${OS}_${ARCH}_${TARGETVARIANT}
done) done
__SCRIPT__
FROM swarupsengupta2007/alpine-s6:3.16.0 FROM swarupsengupta2007/alpine-s6:3.16.0
ARG TARGETOS ARG TARGETOS
+9 -15
View File
@@ -30,30 +30,24 @@ docker buildx create --name cross-platform --platform ${TARGETS} --use
docker buildx build -t <your_tag> . --load docker buildx build -t <your_tag> . --load
# build for multi-arch and push to registry # build for multi-arch and push to registry
docker buildx build --build-arg TARGETS=${TARGETS} -t <your_username>/<your_tag> \
--platform ${TARGETS} . --push
```
Or use the helper script make.bash as follows
```bash
# optional, choose targets (defaults to the following list) # optional, choose targets (defaults to the following list)
export TARGETS="linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6" export TARGETS="linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6"
# optional, choose psiphon version (defaults to the lastest committed docker image) # choose psiphon version
export VERSION=2.0.30 export VERSION=2.0.31
# optional, choose go version (currently 1.20) # choose go version (currently 1.22.7)
export GO_VERSION=1.20 export GO_VERSION=1.22.7
# run the script # run the script
./make.bash ./make.bash --push
``` ```
Build-args available Build-args available
|build-arg|default|Description| |build-arg|Description|
|--|--|--| |--|--|
|VERSION|2.0.23|psiphon-tunnel-core release version| |VERSION|psiphon-tunnel-core release version|
|TARGETS|\<BUIDLOS\>/\<BUILDARCH\>|Targets for cross-compilation for the build stage| |TARGETS|\<BUIDLOS\>/\<BUILDARCH\> (Targets for cross-compilation for the build stage)|
--- ---
# Usage # Usage
+4 -4
View File
@@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
MK_TARGETS=${TARGETS:-"linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6"} MK_TARGETS=${TARGETS:-"linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6"}
MK_VERSION=${VERSION:-2.0.31} MK_VERSION=${VERSION:-2.0.32}
MK_GO_VERSION=${GO_VERSION:-1.22.7} MK_GO_VERSION=${GO_VERSION:-1.23.7}
sudo docker buildx build \ docker buildx build \
--build-arg TARGETS=${MK_TARGETS} \ --build-arg TARGETS=${MK_TARGETS} \
--build-arg VERSION=${MK_VERSION} \ --build-arg PSIPHON_VERSION=${MK_VERSION} \
--build-arg GO_VERSION=${MK_GO_VERSION} \ --build-arg GO_VERSION=${MK_GO_VERSION} \
-t swarupsengupta2007/psiphon:${MK_VERSION} \ -t swarupsengupta2007/psiphon:${MK_VERSION} \
-t swarupsengupta2007/psiphon:latest \ -t swarupsengupta2007/psiphon:latest \