# https://goreleaser.com project_name: gotosocial version: 2 # https://goreleaser.com/customization/hooks/ before: hooks: # generate the swagger.yaml file using go-swagger and bundle it into the assets directory - swagger generate spec --scan-models --exclude-deps -o web/assets/swagger.yaml - sed -i "s/REPLACE_ME/{{ incpatch .Version }}/" web/assets/swagger.yaml # Install web deps + bundle web assets - yarn --cwd ./web/source install - yarn --cwd ./web/source ts-patch install # https://typia.io/docs/setup/#manual-setup - yarn --cwd ./web/source build # https://goreleaser.com/customization/build/ builds: # DEFAULT WASM SQLITE BINARY BUILDS - id: gotosocial main: ./cmd/gotosocial binary: gotosocial ldflags: - -s - -w - -extldflags - -static - -X main.Version={{.Version}} tags: - netgo - osusergo - static_build - kvformat - timetzdata - >- {{ if and (index .Env "DEBUG") (.Env.DEBUG) }}debugenv{{ end }} env: - CGO_ENABLED=0 goos: - linux - freebsd - openbsd goarch: - 386 - amd64 - arm - arm64 goarm: - 6 - 7 ignore: # build freebsd + openbsd only for amd64 - goos: freebsd goarch: arm64 - goos: freebsd goarch: arm - goos: freebsd goarch: 386 - goos: openbsd goarch: arm64 - goos: openbsd goarch: arm - goos: openbsd goarch: 386 mod_timestamp: "{{ .CommitTimestamp }}" # MODERNC SQLITE BINARY BUILDS - id: gotosocial_moderncsqlite main: ./cmd/gotosocial binary: gotosocial ldflags: - -s - -w - -extldflags - -static - -X main.Version={{.Version}} tags: - netgo - osusergo - static_build - kvformat - timetzdata - >- {{ if and (index .Env "DEBUG") (.Env.DEBUG) }}debugenv{{ end }} - moderncsqlite3 env: - CGO_ENABLED=0 goos: - linux - freebsd - openbsd goarch: - 386 - amd64 - arm - arm64 goarm: - 6 - 7 ignore: # build freebsd + openbsd only for amd64 - goos: freebsd goarch: arm64 - goos: freebsd goarch: arm - goos: freebsd goarch: 386 - goos: openbsd goarch: arm64 - goos: openbsd goarch: arm - goos: openbsd goarch: 386 mod_timestamp: "{{ .CommitTimestamp }}" # https://goreleaser.com/customization/docker/ dockers: # DEFAULT WASM SQLITE DOCKER BUILDS - use: buildx goos: linux goarch: amd64 id: amd64 ids: - gotosocial image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64" - "superseriousbusiness/{{ .ProjectName }}:latest-amd64" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-amd64{{ end }}" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm64 id: arm64v8 ids: - gotosocial image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8" - "superseriousbusiness/{{ .ProjectName }}:latest-arm64v8" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8{{ end }}" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm goarm: 6 id: armv6 ids: - gotosocial image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6" - "superseriousbusiness/{{ .ProjectName }}:latest-armv6" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv6{{ end }}" build_flag_templates: - "--platform=linux/arm/v6" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm goarm: 7 id: armv7 ids: - gotosocial image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7" - "superseriousbusiness/{{ .ProjectName }}:latest-armv7" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv7{{ end }}" build_flag_templates: - "--platform=linux/arm/v7" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal # MODERNC SQLITE DOCKER BUILDS - use: buildx goos: linux goarch: amd64 id: amd64-moderncsqlite ids: - gotosocial_moderncsqlite image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64-moderncsqlite" - "superseriousbusiness/{{ .ProjectName }}:latest-amd64-moderncsqlite" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-amd64-moderncsqlite{{ end }}" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm64 id: arm64v8-moderncsqlite ids: - gotosocial_moderncsqlite image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8-moderncsqlite" - "superseriousbusiness/{{ .ProjectName }}:latest-arm64v8-moderncsqlite" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8-moderncsqlite{{ end }}" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm goarm: 6 id: armv6-moderncsqlite ids: - gotosocial_moderncsqlite image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6-moderncsqlite" - "superseriousbusiness/{{ .ProjectName }}:latest-armv6-moderncsqlite" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv6-moderncsqlite{{ end }}" build_flag_templates: - "--platform=linux/arm/v6" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal - use: buildx goos: linux goarch: arm goarm: 7 id: armv7-moderncsqlite ids: - gotosocial_moderncsqlite image_templates: - "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7-moderncsqlite" - "superseriousbusiness/{{ .ProjectName }}:latest-armv7-moderncsqlite" - "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv7-moderncsqlite{{ end }}" build_flag_templates: - "--platform=linux/arm/v7" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" extra_files: - web - go.mod - go.sum - cmd - internal # https://goreleaser.com/customization/docker_manifest/ docker_manifests: # DEFAULT WASM SQLITE BUILDS - name_template: superseriousbusiness/{{ .ProjectName }}:{{ .Version }} image_templates: - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64 - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8 - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6 - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7 - name_template: superseriousbusiness/{{ .ProjectName }}:latest image_templates: - superseriousbusiness/{{ .ProjectName }}:latest-amd64 - superseriousbusiness/{{ .ProjectName }}:latest-arm64v8 - superseriousbusiness/{{ .ProjectName }}:latest-armv6 - superseriousbusiness/{{ .ProjectName }}:latest-armv7 - name_template: "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot{{ end }}" image_templates: - superseriousbusiness/{{ .ProjectName }}:snapshot-amd64 - superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8 - superseriousbusiness/{{ .ProjectName }}:snapshot-armv6 - superseriousbusiness/{{ .ProjectName }}:snapshot-armv7 # MODERNC SQLITE BUILDS - name_template: superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-moderncsqlite image_templates: - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7-moderncsqlite - name_template: superseriousbusiness/{{ .ProjectName }}:latest-moderncsqlite image_templates: - superseriousbusiness/{{ .ProjectName }}:latest-amd64-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:latest-arm64v8-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:latest-armv6-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:latest-armv7-moderncsqlite - name_template: "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-moderncsqlite{{ end }}" image_templates: - superseriousbusiness/{{ .ProjectName }}:snapshot-amd64-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:snapshot-armv6-moderncsqlite - superseriousbusiness/{{ .ProjectName }}:snapshot-armv7-moderncsqlite # https://goreleaser.com/customization/archive/ archives: # DEFAULT WASM SQLITE BUILD - id: gotosocial builds: - gotosocial files: # standard release files - LICENSE - README.md - CHANGELOG* # web stuff minus source - web/assets - web/template # example config files - example/config.yaml - example/gotosocial.service name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}" # MODERNC SQLITE BUILD - id: gotosocial_moderncsqlite builds: - gotosocial_moderncsqlite files: # standard release files - LICENSE - README.md - CHANGELOG* # web stuff minus source - web/assets - web/template # example config files - example/config.yaml - example/gotosocial.service name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}_moderncsqlite" - id: web-assets files: - LICENSE # just the web stuff minus source - web/assets - web/template meta: true name_template: "{{ .ProjectName }}_{{ .Version }}_web-assets" # https://goreleaser.com/customization/checksum/ checksum: name_template: 'checksums.txt' # https://goreleaser.com/customization/snapshots/ snapshot: version_template: "{{ incpatch .Version }}-SNAPSHOT" # https://goreleaser.com/customization/source/ source: enabled: true name_template: "{{ .ProjectName }}-{{ .Version }}-source-code" # https://goreleaser.com/customization/release/ release: draft: true prerelease: auto header: | Here's version {{ .Version }} of GoToSocial. Please read the [migration notes](#migration-notes) carefully for instructions on how to upgrade to this version. ## Release highlights - Pee pee - Poo poo - Wee wee ## Migration notes ### Upgrading To upgrade to {{ .Tag }} from a previous release: #### Binary/tar 1. Stop GoToSocial. 2. **Back up your database!** If you're running on SQLite, this is as simple as copying your `sqlite.db` file, eg., `cp sqlite.db sqlite.db.backup`. 3. Download and untar the new release, including the web assets and html templates. 4. Edit your config.yaml file if necessary (see below). 5. Start GoToSocial. 6. Wait patiently for any migrations to run, **do not interrupt migrations or you could leave your db in a broken state and will have to restore from backup**! 7. Enjoy your updated instance. #### Docker 1. Stop GoToSocial. 2. **Back up your database!** If you're running on SQLite, this is as simple as copying your `sqlite.db` file, eg., `cp sqlite.db sqlite.db.backup`. 3. Pull the new docker container (`superseriousbusiness/gotosocial:{{ .Version }}` or `superseriousbusiness/gotosocial:latest`) 4. Edit your config.yaml file or environment variables if necessary (see below). 5. Start GoToSocial. 6. Wait patiently for any migrations to run, **do not interrupt migrations or you could leave your db in a broken state and will have to restore from backup**! 7. Enjoy your updated instance. ### config.yaml The configuration file has changed since the previous release. - Changed `pee pee` to `poo poo`. - Changed `wee wee` to `more wee wee`. You can see a diff of the config file here: https://github.com/superseriousbusiness/gotosocial/compare/{{ .PreviousTag }}...{{ .Tag }}#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622 ### Database Migrations ⚠️⚠️⚠️ This release may contain database migrations which will run the first time you start up this new version. Be sure not to interrupt this migration process. This will take anywhere between a couple seconds and ten minutes or more (on slower hardware). **Please be patient!** ⚠️⚠️⚠️ ### Which release archive/container should I use? Tl;dr: Regardless of whether you're using SQLite or Postgres as your DB driver, you most likely you want the regular version without `moderncsqlite` in the name. However, if you're on FreeBSD or OpenBSD, use the `moderncsqlite` version instead. See the table below: | OS | Architecture | Binary archive | Docker | | ------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | Linux | x86-64/AMD64 (64-bit) | [linux_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_amd64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | x86-32/i386 (32-bit) | [linux_386.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_386.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | Armv8/ARM64 (64-bit) | [linux_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | Armv7/ARM32 (32-bit) | [linux_armv7.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | Armv6/ARM32 (32-bit) | [linux_armv6.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv6.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | OpenBSD | x86-64/AMD64 (64-bit) | [openbsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_openbsd_amd64_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` | | FreeBSD | x86-64/AMD64 (64-bit) | [freebsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` | # https://goreleaser.com/customization/changelog/ changelog: use: github abbrev: 9 format: "{{ .Message }}, by {{ with .AuthorUsername }}@{{ . }}{{ else }}{{ .AuthorName }} <{{ .AuthorEmail }}>{{ end }} ({{ .SHA }})" groups: - title: Features and performance regexp: '^\[(?:feature|performance).*\].*$' order: 0 - title: Bug fixes regexp: '^\[bug.*\].*$' order: 1 - title: Chores & version bumps regexp: '^\[chore.*\].*$' order: 2 - title: Documentation regexp: '^\[doc.*\].*$' order: 3 - title: Other order: 999