2022-01-18 11:58:09 +08:00
# Release a new version
- To release a new minor version, use the GitHub issue template [Dev: Release a minor version ](https://github.com/gogs/gogs/issues/new?title=Release+<MAJOR>.<MINOR>.0&labels=%F0%9F%93%B8%20release&template=dev_release_minor_version.md ).
- To release a new patch version, use the GitHub issue template [Dev: Release a patch version ](https://github.com/gogs/gogs/issues/new?title=Release+<MAJOR>.<MINOR>.<PATCH>&labels=%F0%9F%93%B8%20release&template=dev_release_patch_version.md ).
## Playbooks
### Update Docker image tag
1. Pull down images and create a manifest:
2022-01-20 12:57:08 +08:00
```sh
$ export VERSION=0.12.4
$ export MINOR_RELEASE=0.12
2022-01-18 11:58:09 +08:00
2022-01-20 12:57:08 +08:00
$ 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
2022-01-18 11:58:09 +08:00
2022-01-20 12:57:08 +08:00
$ 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}
2022-01-18 11:58:09 +08:00
2022-01-20 12:57:08 +08:00
$ echo ${GITHUB_CR_PAT} | docker login ghcr.io -u <USERNAME> --password-stdin
2022-06-08 01:32:37 +08:00
$ docker manifest create \
ghcr.io/gogs/gogs:${MINOR_RELEASE} \
gogs/gogs:${MINOR_RELEASE}-amd64 \
gogs/gogs:${MINOR_RELEASE}-arm64 \
gogs/gogs:${MINOR_RELEASE}-armv7
$ docker manifest push ghcr.io/gogs/gogs:${MINOR_RELEASE}
2022-01-20 12:57:08 +08:00
$ docker push ghcr.io/gogs/gogs:${MINOR_RELEASE}
```
2022-01-18 11:58:09 +08:00
2. Delete ephemeral tags from the [Docker Hub ](https://hub.docker.com/repository/docker/gogs/gogs/tags ).
### Compile and pack binaries
All commands are starting at the repository root.
- macOS:
```sh
# Produce the ZIP archive
$ TAGS=cert task release
```
- Linux:
```sh
# Produce the ZIP archive
$ TAGS="cert pam" task release
# Produce the Tarball
2022-03-02 18:49:16 +08:00
$ export VERSION=0.12.4
2022-01-18 11:58:09 +08:00
$ cd release && tar czf gogs_${VERSION}_linux_$(go env GOARCH).tar.gz gogs
```
- ARMv7:
```sh
2022-03-02 18:49:16 +08:00
# Produce the ZIP archive
$ TAGS="cert pam" task release
# Produce the Tarball
$ export VERSION=0.12.4
$ cd release && tar czf gogs_${VERSION}_linux_armv7.tar.gz gogs
2022-01-18 11:58:09 +08:00
```
- ARMv8:
```sh
# Produce the ZIP archive
$ TAGS="cert pam" task release
# Produce the Tarball
2022-03-02 18:49:16 +08:00
$ export VERSION=0.12.4
2022-01-18 11:58:09 +08:00
$ cd release && tar czf gogs_${VERSION}_linux_armv8.tar.gz gogs
```
- Windows:
```sh
$ TAGS=cert task release
2022-03-19 17:10:00 +08:00
$ TAGS="cert minwinsvc" task release --force
2022-01-18 11:58:09 +08:00
```