mirror of https://github.com/gogs/gogs.git
3.5 KiB
3.5 KiB
Release a new version
- To release a new minor version, use the GitHub issue template Dev: Release a minor version.
- To release a new patch version, use the GitHub issue template Dev: Release a patch version.
Playbooks
Prerequisite
Install Docker Buildx:
$ docker buildx install
Update Docker image tag
- 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.
Compile and pack binaries
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