# 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/ - 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 }} - >- {{ if and (index .Env "MODERNCSQLITE3") (.Env.MODERNCSQLITE3) }}moderncsqlite3{{ end }} env: - CGO_ENABLED=0 goos: - linux - freebsd goarch: - 386 - amd64 - arm - arm64 goarm: - 6 - 7 ignore: # build freebsd only for amd64 - goos: freebsd goarch: arm64 - goos: freebsd goarch: arm - goos: freebsd goarch: 386 mod_timestamp: "{{ .CommitTimestamp }}" dockers: # https://goreleaser.com/customization/docker/ - use: buildx goos: linux goarch: amd64 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 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 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 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 docker_manifests: - 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 archives: # https://goreleaser.com/customization/archive/ - id: binary-release 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 - 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"