Install Docker Buildx:
$ docker buildx install
Pull down images and create a manifest:
$ export VERSION=0.12.4
$ export MINOR_RELEASE=0.12
$ docker pull --platform linux/amd64 gogs/gogs:${VERSION}
$ docker tag gogs/gogs:${VERSION} gogs/gogs:${MINOR_RELEASE}-amd64
$ docker push gogs/gogs:${MINOR_RELEASE}-amd64
$ docker pull --platform linux/arm64 gogs/gogs:${VERSION}
$ docker tag gogs/gogs:${VERSION} gogs/gogs:${MINOR_RELEASE}-arm64
$ docker push gogs/gogs:${MINOR_RELEASE}-arm64
$ docker pull --platform linux/arm/v7 gogs/gogs:${VERSION}
$ docker tag gogs/gogs:${VERSION} gogs/gogs:${MINOR_RELEASE}-armv7
$ docker push gogs/gogs:${MINOR_RELEASE}-armv7
$ docker manifest rm gogs/gogs:${MINOR_RELEASE}
$ docker manifest create \
gogs/gogs:${MINOR_RELEASE} \
gogs/gogs:${MINOR_RELEASE}-amd64 \
gogs/gogs:${MINOR_RELEASE}-arm64 \
gogs/gogs:${MINOR_RELEASE}-armv7
$ docker manifest push gogs/gogs:${MINOR_RELEASE}
# Only push "linux/amd64" for now
$ echo ${GITHUB_CR_PAT} | docker login ghcr.io -u <USERNAME> --password-stdin
$ docker pull --platform linux/amd64 gogs/gogs:${VERSION}
$ docker tag gogs/gogs:${VERSION} ghcr.io/gogs/gogs:${MINOR_RELEASE}
$ docker push ghcr.io/gogs/gogs:${MINOR_RELEASE}
Delete ephemeral tags from the Docker Hub.
All commands are starting at the repository root.
macOS:
# Produce the ZIP archive
$ TAGS=cert task release
Linux AMD64 and i386:
$ export VERSION=0.12.4
$ docker pull --platform linux/amd64 centos:7
$ docker buildx build --no-cache --platform=linux/amd64 -f docs/dev/release/linux-amd64.Dockerfile .
$ docker run --name=gogs_${VERSION}_linux_amd64 --platform=linux/amd64 <image SHA>
$ docker cp gogs_${VERSION}_linux_amd64:/gogs.io/gogs/release/gogs.zip gogs_${VERSION}_linux_amd64.zip
$ docker cp gogs_${VERSION}_linux_amd64:/gogs.io/gogs/release/gogs.tar.gz gogs_${VERSION}_linux_amd64.tar.gz
$ docker pull --platform linux/386 centos:7
$ docker buildx build --no-cache --platform=linux/386 -f docs/dev/release/linux-386.Dockerfile .
$ docker run --name=gogs_${VERSION}_linux_386 --platform=linux/386 <image SHA>
$ docker cp gogs_${VERSION}_linux_386:/gogs.io/gogs/release/gogs.zip gogs_${VERSION}_linux_386.zip
$ docker cp gogs_${VERSION}_linux_386:/gogs.io/gogs/release/gogs.tar.gz gogs_${VERSION}_linux_386.tar.gz
ARMv7:
# Extract the binary from the Docker image
$ docker pull --platform linux/arm/v7 gogs/gogs:${VERSION}
$ docker run \
--platform linux/arm/v7 \
-v ${PWD}:/opt/mount/ \
gogs/gogs:${VERSION} \
bash -c "cp /app/gogs/gogs /opt/mount/"
ARMv8:
# Produce the ZIP archive
$ TAGS="cert pam" task release
# Produce the Tarball
$ export VERSION=0.12.4
$ cd release && tar czf gogs_${VERSION}_linux_armv8.tar.gz gogs
Windows:
$ TAGS=cert task release
$ TAGS="cert minwinsvc" task release