# Version 2 of GoReleaser: https://goreleaser.com/errors/version/ version: 2 project_name: gotosocial before: # https://goreleaser.com/customization/hooks/ 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 builds: # https://goreleaser.com/customization/build/ # 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 }}" dockers: # https://goreleaser.com/customization/docker/ # 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 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 archives: # https://goreleaser.com/customization/archive/ # 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" checksum: # https://goreleaser.com/customization/checksum/ name_template: 'checksums.txt' snapshot: # https://goreleaser.com/customization/snapshots/ version_template: "{{ incpatch .Version }}-SNAPSHOT" source: # https://goreleaser.com/customization/source/ enabled: true name_template: "{{ .ProjectName }}-{{ .Version }}-source-code"