github.com/goreleaser/goreleaser@v1.25.1/.goreleaser.yaml (about)

     1  # yaml-language-server: $schema=https://goreleaser.com/static/schema.json
     2  # vim: set ts=2 sw=2 tw=0 fo=jcroql
     3  version: 1
     4  
     5  env:
     6    - GO111MODULE=on
     7  
     8  before:
     9    hooks:
    10      - go mod tidy
    11      - ./scripts/completions.sh
    12      - ./scripts/manpages.sh
    13  
    14  snapshot:
    15    name_template: "{{ incpatch .Version }}-next"
    16  
    17  gomod:
    18    proxy: true
    19  
    20  report_sizes: true
    21  
    22  git:
    23    ignore_tags:
    24      - "{{ if not .IsNightly }}nightly{{ end }}"
    25  
    26  metadata:
    27    mod_timestamp: "{{ .CommitTimestamp }}"
    28  
    29  builds:
    30    - env:
    31        - CGO_ENABLED=0
    32      goos:
    33        - linux
    34        - darwin
    35        - windows
    36      goarch:
    37        - "386"
    38        - amd64
    39        - arm
    40        - arm64
    41        - ppc64
    42      goarm:
    43        - "7"
    44      ignore:
    45        - goos: windows
    46          goarch: arm
    47      mod_timestamp: "{{ .CommitTimestamp }}"
    48      flags:
    49        - -trimpath
    50      ldflags:
    51        - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser -X main.treeState={{ .IsGitDirty }}
    52  
    53  universal_binaries:
    54    - replace: false
    55  
    56  # temporarely disables until we add better filters for platforms et al, and test more.
    57  # upx:
    58  #   - enabled: true
    59  
    60  checksum:
    61    name_template: "checksums.txt"
    62  
    63  changelog:
    64    sort: asc
    65    use: github
    66    filters:
    67      exclude:
    68        - "^test:"
    69        - "^test\\("
    70        - "^chore"
    71        - "merge conflict"
    72        - Merge pull request
    73        - Merge remote-tracking branch
    74        - Merge branch
    75        - go mod tidy
    76    groups:
    77      - title: Dependency updates
    78        regexp: '^.*?(feat|fix|chore)\(deps\)!?:.+$'
    79        order: 300
    80      - title: "New Features"
    81        regexp: '^.*?feat(\(.+\))??!?:.+$'
    82        order: 100
    83      - title: "Security updates"
    84        regexp: '^.*?sec(\(.+\))??!?:.+$'
    85        order: 150
    86      - title: "Bug fixes"
    87        regexp: '^.*?(fix|refactor)(\(.+\))??!?:.+$'
    88        order: 200
    89      - title: "Documentation updates"
    90        regexp: ^.*?docs?(\(.+\))??!?:.+$
    91        order: 400
    92      - title: "Build process updates"
    93        regexp: ^.*?(build|ci)(\(.+\))??!?:.+$
    94        order: 400
    95      - title: Other work
    96        order: 9999
    97  
    98  dockers:
    99    - image_templates:
   100        - "goreleaser/goreleaser:v{{ .Version }}-amd64"
   101        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
   102      dockerfile: Dockerfile
   103      use: buildx
   104      build_flag_templates:
   105        - "--pull"
   106        - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md"
   107        - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png"
   108        - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]'
   109        - "--label=io.artifacthub.package.license=MIT"
   110        - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible"
   111        - "--label=org.opencontainers.image.created={{.Date}}"
   112        - "--label=org.opencontainers.image.name={{.ProjectName}}"
   113        - "--label=org.opencontainers.image.revision={{.FullCommit}}"
   114        - "--label=org.opencontainers.image.version={{.Version}}"
   115        - "--label=org.opencontainers.image.source={{.GitURL}}"
   116        - "--platform=linux/amd64"
   117      extra_files:
   118        - scripts/entrypoint.sh
   119    - image_templates:
   120        - "goreleaser/goreleaser:v{{ .Version }}-arm64"
   121        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
   122      dockerfile: Dockerfile
   123      use: buildx
   124      build_flag_templates:
   125        - "--pull"
   126        - "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md"
   127        - "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png"
   128        - '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]'
   129        - "--label=io.artifacthub.package.license=MIT"
   130        - "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible"
   131        - "--label=org.opencontainers.image.created={{.Date}}"
   132        - "--label=org.opencontainers.image.name={{.ProjectName}}"
   133        - "--label=org.opencontainers.image.revision={{.FullCommit}}"
   134        - "--label=org.opencontainers.image.version={{.Version}}"
   135        - "--label=org.opencontainers.image.source={{.GitURL}}"
   136        - "--platform=linux/arm64"
   137      goarch: arm64
   138      extra_files:
   139        - scripts/entrypoint.sh
   140  
   141  docker_manifests:
   142    - name_template: "goreleaser/goreleaser:v{{ .Version }}"
   143      image_templates:
   144        - "goreleaser/goreleaser:v{{ .Version }}-amd64"
   145        - "goreleaser/goreleaser:v{{ .Version }}-arm64"
   146    - name_template: "ghcr.io/goreleaser/goreleaser:v{{ .Version }}"
   147      image_templates:
   148        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
   149        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
   150    - name_template: "{{ if not .IsNightly }}goreleaser/goreleaser:latest{{ end }}"
   151      image_templates:
   152        - "goreleaser/goreleaser:v{{ .Version }}-amd64"
   153        - "goreleaser/goreleaser:v{{ .Version }}-arm64"
   154    - name_template: "{{ if not .IsNightly }}ghcr.io/goreleaser/goreleaser:latest{{ end }}"
   155      image_templates:
   156        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
   157        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
   158    - name_template: "{{ if .IsNightly }}goreleaser/goreleaser:nightly{{ end }}"
   159      image_templates:
   160        - "goreleaser/goreleaser:v{{ .Version }}-amd64"
   161        - "goreleaser/goreleaser:v{{ .Version }}-arm64"
   162    - name_template: "{{ if .IsNightly }}ghcr.io/goreleaser/goreleaser:nightly{{ end }}"
   163      image_templates:
   164        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
   165        - "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
   166  
   167  archives:
   168    - name_template: >-
   169        {{- .ProjectName }}_
   170        {{- title .Os }}_
   171        {{- if eq .Arch "amd64" }}x86_64
   172        {{- else if eq .Arch "386" }}i386
   173        {{- else }}{{ .Arch }}{{ end }}
   174        {{- if .Arm }}v{{ .Arm }}{{ end -}}
   175      format_overrides:
   176        - goos: windows
   177          format: zip
   178      builds_info:
   179        group: root
   180        owner: root
   181      files:
   182        - README.md
   183        - LICENSE.md
   184        - completions/*
   185        - manpages/*
   186  
   187  brews:
   188    - repository:
   189        owner: goreleaser
   190        name: homebrew-tap
   191      directory: Formula
   192      goarm: "7"
   193      homepage: https://goreleaser.com
   194      description: Deliver Go binaries as fast and easily as possible
   195      license: MIT
   196      test: |
   197        system "#{bin}/goreleaser -v"
   198      dependencies:
   199        - name: go
   200          type: optional
   201        - name: git
   202      conflicts:
   203        - goreleaser-pro
   204      extra_install: |-
   205        bash_completion.install "completions/goreleaser.bash" => "goreleaser"
   206        zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser"
   207        fish_completion.install "completions/goreleaser.fish"
   208        man1.install "manpages/goreleaser.1.gz"
   209  
   210  nix:
   211    - name: goreleaser
   212      repository:
   213        owner: goreleaser
   214        name: nur
   215      homepage: https://goreleaser.com
   216      description: Deliver Go binaries as fast and easily as possible
   217      path: pkgs/goreleaser/default.nix
   218      license: mit
   219      extra_install: |-
   220        installManPage ./manpages/goreleaser.1.gz
   221        installShellCompletion ./completions/*
   222  
   223  winget:
   224    - name: goreleaser
   225      publisher: goreleaser
   226      license: MIT
   227      homepage: https://goreleaser.com
   228      short_description: Deliver Go binaries as fast and easily as possible
   229      repository:
   230        owner: goreleaser
   231        name: winget-pkgs
   232        branch: "goreleaser-{{.Version}}"
   233        pull_request:
   234          enabled: true
   235          draft: true
   236          base:
   237            owner: microsoft
   238            name: winget-pkgs
   239            branch: master
   240  
   241  aurs:
   242    - homepage: https://goreleaser.com
   243      description: Deliver Go binaries as fast and easily as possible
   244      maintainers:
   245        - "Fernandez Ludovic <lfernandez dot dev at gmail dot com>"
   246        - "Carlos Alexandro Becker <carlos at becker dot software>"
   247      license: MIT
   248      private_key: "{{ .Env.AUR_KEY }}"
   249      git_url: "ssh://aur@aur.archlinux.org/goreleaser-bin.git"
   250      package: |-
   251        # bin
   252        install -Dm755 "./goreleaser" "${pkgdir}/usr/bin/goreleaser"
   253  
   254        # license
   255        install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/goreleaser/LICENSE"
   256  
   257        # completions
   258        mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
   259        mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
   260        mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
   261        install -Dm644 "./completions/goreleaser.bash" "${pkgdir}/usr/share/bash-completion/completions/goreleaser"
   262        install -Dm644 "./completions/goreleaser.zsh" "${pkgdir}/usr/share/zsh/site-functions/_goreleaser"
   263        install -Dm644 "./completions/goreleaser.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/goreleaser.fish"
   264  
   265        # man pages
   266        install -Dm644 "./manpages/goreleaser.1.gz" "${pkgdir}/usr/share/man/man1/goreleaser.1.gz"
   267  
   268  scoops:
   269    - repository:
   270        owner: goreleaser
   271        name: scoop-bucket
   272      directory: bucket
   273      homepage: https://goreleaser.com
   274      description: Deliver Go binaries as fast and easily as possible
   275      license: MIT
   276  
   277  nfpms:
   278    - file_name_template: "{{ .ConventionalFileName }}"
   279      id: packages
   280      homepage: https://goreleaser.com
   281      description: |-
   282        Deliver Go binaries as fast and easily as possible.
   283        GoReleaser allows you to release easily build, package, publish and
   284        announce to several places at one go.
   285      maintainer: Carlos Alexandro Becker <carlos@becker.software>
   286      license: MIT
   287      vendor: GoReleaser
   288      bindir: /usr/bin
   289      section: utils
   290      contents:
   291        - src: ./completions/goreleaser.bash
   292          dst: /usr/share/bash-completion/completions/goreleaser
   293          file_info:
   294            mode: 0644
   295        - src: ./completions/goreleaser.fish
   296          dst: /usr/share/fish/vendor_completions.d/goreleaser.fish
   297          file_info:
   298            mode: 0644
   299        - src: ./completions/goreleaser.zsh
   300          dst: /usr/share/zsh/vendor-completions/_goreleaser
   301          file_info:
   302            mode: 0644
   303        - src: ./manpages/goreleaser.1.gz
   304          dst: /usr/share/man/man1/goreleaser.1.gz
   305          file_info:
   306            mode: 0644
   307        - src: ./LICENSE.md
   308          dst: /usr/share/doc/goreleaser/copyright
   309          file_info:
   310            mode: 0644
   311      formats:
   312        - apk
   313        - deb
   314        - rpm
   315        - archlinux
   316      dependencies:
   317        - git
   318      recommends:
   319        - golang
   320      deb:
   321        lintian_overrides:
   322          - statically-linked-binary
   323          - changelog-file-missing-in-native-package
   324  
   325  snapcrafts:
   326    - name_template: "{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
   327      summary: Deliver Go binaries as fast and easily as possible
   328      description: |
   329        GoReleaser builds Go binaries for several platforms, creates a GitHub
   330        release and then pushes a Homebrew formula to a repository. All that
   331        wrapped in your favorite CI.
   332      grade: stable
   333      confinement: classic
   334      publish: true
   335      disable: "{{ if .IsNightly }}true{{ end }}"
   336  
   337  sboms:
   338    - artifacts: archive
   339  
   340  signs:
   341    - cmd: cosign
   342      certificate: "${artifact}.pem"
   343      output: true
   344      artifacts: checksum
   345      args:
   346        - sign-blob
   347        - "--output-certificate=${certificate}"
   348        - "--output-signature=${signature}"
   349        - "${artifact}"
   350        - --yes
   351  
   352  docker_signs:
   353    - cmd: cosign
   354      artifacts: manifests
   355      output: true
   356      args:
   357        - "sign"
   358        - "${artifact}@${digest}"
   359        - --yes
   360  
   361  publishers:
   362    - name: fury.io
   363      ids:
   364        - packages
   365      env:
   366        - "FURY_TOKEN={{ .Env.FURY_TOKEN }}"
   367      cmd: ./scripts/fury-upload.sh {{ .ArtifactName }}
   368      disable: "{{ if .IsNightly }}true{{ end }}"
   369  
   370  milestones:
   371    - close: true
   372  
   373  release:
   374    name_template: "v{{ .Version }}"
   375    footer: |
   376      **Full Changelog**: https://github.com/goreleaser/goreleaser/compare/{{ .PreviousTag }}...{{ if .IsNightly }}nightly{{ else }}{{ .Tag }}{{ end }}
   377  
   378      {{ if not .IsNightly }}
   379      ## Helping out
   380  
   381      This release is only possible thanks to **all** the support of some **awesome people**!
   382  
   383      Want to be one of them?
   384      You can [sponsor](https://goreleaser.com/sponsors/), get a [Pro License](https://goreleaser.com/pro) or [contribute with code](https://goreleaser.com/contributing).
   385  
   386      ## Where to go next?
   387  
   388      * Find examples and commented usage of all options in our [website](https://goreleaser.com/intro/).
   389      * Reach out on [Discord](https://discord.gg/RGEBtg8vQ6) and [Twitter](https://twitter.com/goreleaser)!
   390  
   391      <a href="https://goreleaser.com"><img src="https://raw.githubusercontent.com/goreleaser/artwork/master/opencollective-header.png" with="100%" alt="GoReleaser logo"></a>
   392      {{ end }}
   393  
   394  announce:
   395    twitter:
   396      enabled: false
   397      message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"
   398  
   399    mastodon:
   400      enabled: true
   401      message_template: "#GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"
   402      server: https://fosstodon.org
   403  
   404    discord:
   405      enabled: true
   406      message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"