version: 2

project_name: trivy
builds:
  - id: build-linux
    main: ./cmd/trivy/
    binary: trivy
    ldflags:
      - -s -w
      - "-extldflags '-static'"
      - -X github.com/aquasecurity/trivy/pkg/version/app.ver={{.Version}}
    env:
      - CGO_ENABLED=0
      - GOEXPERIMENT=jsonv2
    goos:
      - linux
    goarch:
      - 386
      - arm
      - amd64
      - arm64
      - s390x
      - ppc64le
    goarm:
      - 7
  - id: build-bsd
    main: ./cmd/trivy/
    binary: trivy
    ldflags:
      - -s -w
      - "-extldflags '-static'"
      - -X github.com/aquasecurity/trivy/pkg/version/app.ver={{.Version}}
    env:
      - CGO_ENABLED=0
      - GOEXPERIMENT=jsonv2
    goos:
      - freebsd
    goarch:
      # modernc.org/sqlite doesn't support freebsd/arm64, etc.
      # Also, freebsd/386 is no longer supported in modernc.org/libc
      # See: https://gitlab.com/cznic/libc/-/issues/45
      - amd64
  - id: build-macos
    main: ./cmd/trivy/
    binary: trivy
    ldflags:
      - -s -w
      - "-extldflags '-static'"
      - -X github.com/aquasecurity/trivy/pkg/version/app.ver={{.Version}}
    env:
      - CGO_ENABLED=0
      - GOEXPERIMENT=jsonv2
    goos:
      - darwin
    goarch:
      - amd64
      - arm64
    goarm:
      - 7
  - id: build-windows
    main: ./cmd/trivy/
    binary: trivy
    ldflags:
      - -s -w
      - "-extldflags '-static'"
      - -X github.com/aquasecurity/trivy/pkg/version/app.ver={{.Version}}
    env:
      - CGO_ENABLED=0
      - GOEXPERIMENT=jsonv2
    goos:
      - windows
    goarch:
      # modernc.org/sqlite doesn't support windows/386 and windows/arm, etc.
      - amd64
    goarm:
      - 7

release:
    extra_files:
      - glob: ./bom.json
    discussion_category_name: Announcements

nfpms:
  -
    formats:
      - deb
      - rpm
    vendor: "aquasecurity"
    homepage: "https://github.com/aquasecurity"
    maintainer: "Teppei Fukuda <knqyf263@gmail.com>"
    description: "A Fast Vulnerability Scanner for Containers"
    license: "Apache-2.0"
    file_name_template: >-
      {{ .ProjectName }}_{{ .Version }}_
      {{- if eq .Os "darwin" }}macOS
      {{- else if eq .Os "openbsd" }}OpenBSD
      {{- else if eq .Os "netbsd" }}NetBSD
      {{- else if eq .Os "freebsd" }}FreeBSD
      {{- else if eq .Os "dragonfly" }}DragonFlyBSD
      {{- else}}{{- title .Os }}{{ end }}-
      {{- if eq .Arch "amd64" }}64bit
      {{- else if eq .Arch "386" }}32bit
      {{- else if eq .Arch "arm" }}ARM
      {{- else if eq .Arch "arm64" }}ARM64
      {{- else if eq .Arch "ppc64le" }}PPC64LE
      {{- else }}{{ .Arch }}{{ end }}
    contents:
     - src: contrib/*.tpl
       dst: /usr/local/share/trivy/templates
    rpm:
      signature:
         key_file: '{{ .Env.GPG_FILE }}'

archives:
  - id: archive
    format: tar.gz
    name_template: >-
      {{ .ProjectName }}_{{ .Version }}_
      {{- if eq .Os "darwin" }}macOS
      {{- else if eq .Os "linux" }}Linux
      {{- else if eq .Os "openbsd" }}OpenBSD
      {{- else if eq .Os "netbsd" }}NetBSD
      {{- else if eq .Os "freebsd" }}FreeBSD
      {{- else if eq .Os "dragonfly" }}DragonFlyBSD
      {{- else}}{{- .Os }}{{ end }}-
      {{- if eq .Arch "amd64" }}64bit
      {{- else if eq .Arch "386" }}32bit
      {{- else if eq .Arch "arm" }}ARM
      {{- else if eq .Arch "arm64" }}ARM64
      {{- else if eq .Arch "ppc64le" }}PPC64LE
      {{- else }}{{ .Arch }}{{ end }}
    files:
      - README.md
      - LICENSE
      - contrib/*.tpl
    format_overrides:
      - goos: windows
        format: zip


brews:
  -
    repository:
      owner: aquasecurity
      name: homebrew-trivy
    homepage: "https://github.com/aquasecurity/trivy"
    description: "Scanner for vulnerabilities in container images, file systems, and Git repositories, as well as for configuration issues"
    url_template: "https://get.trivy.dev/trivy?version={{ .Version }}&os={{ tolower .Os }}&arch={{ tolower .Arch }}"
    test: |
      system "#{bin}/trivy", "--version"

dockers:
  - image_templates:
      - "docker.io/aquasec/trivy:{{ .Version }}-amd64"
      - "docker.io/aquasec/trivy:latest-amd64"
      - "ghcr.io/aquasecurity/trivy:{{ .Version }}-amd64"
      - "ghcr.io/aquasecurity/trivy:latest-amd64"
      - "public.ecr.aws/aquasecurity/trivy:latest-amd64"
      - "public.ecr.aws/aquasecurity/trivy:{{ .Version }}-amd64"
    use: buildx
    goos: linux
    goarch: amd64
    ids:
      - build-linux
    build_flag_templates:
      - "--label=org.opencontainers.image.title={{ .ProjectName }}"
      - "--label=org.opencontainers.image.description=A Fast Vulnerability Scanner for Containers"
      - "--label=org.opencontainers.image.vendor=Aqua Security"
      - "--label=org.opencontainers.image.version={{ .Version }}"
      - "--label=org.opencontainers.image.created={{ .Date }}"
      - "--label=org.opencontainers.image.source=https://github.com/aquasecurity/trivy"
      - "--label=org.opencontainers.image.revision={{ .FullCommit }}"
      - "--label=org.opencontainers.image.url=https://www.aquasec.com/products/trivy/"
      - "--label=org.opencontainers.image.documentation=https://trivy.dev/v{{ .Version }}/"
      - "--platform=linux/amd64"
    extra_files:
    - contrib/
  - image_templates:
      - "docker.io/aquasec/trivy:{{ .Version }}-arm64"
      - "docker.io/aquasec/trivy:latest-arm64"
      - "ghcr.io/aquasecurity/trivy:{{ .Version }}-arm64"
      - "ghcr.io/aquasecurity/trivy:latest-arm64"
      - "public.ecr.aws/aquasecurity/trivy:latest-arm64"
      - "public.ecr.aws/aquasecurity/trivy:{{ .Version }}-arm64"
    use: buildx
    goos: linux
    goarch: arm64
    ids:
      - build-linux
    build_flag_templates:
      - "--label=org.opencontainers.image.title={{ .ProjectName }}"
      - "--label=org.opencontainers.image.description=A Fast Vulnerability Scanner for Containers"
      - "--label=org.opencontainers.image.vendor=Aqua Security"
      - "--label=org.opencontainers.image.version={{ .Version }}"
      - "--label=org.opencontainers.image.created={{ .Date }}"
      - "--label=org.opencontainers.image.source=https://github.com/aquasecurity/trivy"
      - "--label=org.opencontainers.image.revision={{ .FullCommit }}"
      - "--label=org.opencontainers.image.url=https://www.aquasec.com/products/trivy/"
      - "--label=org.opencontainers.image.documentation=https://trivy.dev/v{{ .Version }}/"
      - "--platform=linux/arm64"
    extra_files:
    - contrib/
  - image_templates:
      - "docker.io/aquasec/trivy:{{ .Version }}-s390x"
      - "docker.io/aquasec/trivy:latest-s390x"
      - "ghcr.io/aquasecurity/trivy:{{ .Version }}-s390x"
      - "ghcr.io/aquasecurity/trivy:latest-s390x"
      - "public.ecr.aws/aquasecurity/trivy:latest-s390x"
      - "public.ecr.aws/aquasecurity/trivy:{{ .Version }}-s390x"
    use: buildx
    goos: linux
    goarch: s390x
    ids:
      - build-linux
    build_flag_templates:
      - "--label=org.opencontainers.image.title={{ .ProjectName }}"
      - "--label=org.opencontainers.image.description=A Fast Vulnerability Scanner for Containers"
      - "--label=org.opencontainers.image.vendor=Aqua Security"
      - "--label=org.opencontainers.image.version={{ .Version }}"
      - "--label=org.opencontainers.image.created={{ .Date }}"
      - "--label=org.opencontainers.image.source=https://github.com/aquasecurity/trivy"
      - "--label=org.opencontainers.image.revision={{ .FullCommit }}"
      - "--label=org.opencontainers.image.url=https://www.aquasec.com/products/trivy/"
      - "--label=org.opencontainers.image.documentation=https://trivy.dev/v{{ .Version }}/"
      - "--platform=linux/s390x"
    extra_files:
    - contrib/
  - image_templates:
      - "docker.io/aquasec/trivy:{{ .Version }}-ppc64le"
      - "docker.io/aquasec/trivy:latest-ppc64le"
      - "ghcr.io/aquasecurity/trivy:{{ .Version }}-ppc64le"
      - "ghcr.io/aquasecurity/trivy:latest-ppc64le"
      - "public.ecr.aws/aquasecurity/trivy:latest-ppc64le"
      - "public.ecr.aws/aquasecurity/trivy:{{ .Version }}-ppc64le"
    use: buildx
    goos: linux
    goarch: ppc64le
    ids:
      - build-linux
    build_flag_templates:
      - "--label=org.opencontainers.image.title={{ .ProjectName }}"
      - "--label=org.opencontainers.image.description=A Fast Vulnerability Scanner for Containers"
      - "--label=org.opencontainers.image.vendor=Aqua Security"
      - "--label=org.opencontainers.image.version={{ .Version }}"
      - "--label=org.opencontainers.image.created={{ .Date }}"
      - "--label=org.opencontainers.image.source=https://github.com/aquasecurity/trivy"
      - "--label=org.opencontainers.image.revision={{ .FullCommit }}"
      - "--label=org.opencontainers.image.url=https://www.aquasec.com/products/trivy/"
      - "--label=org.opencontainers.image.documentation=https://trivy.dev/v{{ .Version }}/"
      - "--platform=linux/ppc64le"
    extra_files:
    - contrib/

docker_manifests:
  - name_template: 'aquasec/trivy:{{ .Version }}'
    image_templates:
    - 'aquasec/trivy:{{ .Version }}-amd64'
    - 'aquasec/trivy:{{ .Version }}-arm64'
    - 'aquasec/trivy:{{ .Version }}-s390x'
    - 'aquasec/trivy:{{ .Version }}-ppc64le'
  - name_template: 'ghcr.io/aquasecurity/trivy:{{ .Version }}'
    image_templates:
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-amd64'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-arm64'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-s390x'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-ppc64le'
  - name_template: 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}'
    image_templates:
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-amd64'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-arm64'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-s390x'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-ppc64le'
  - name_template: 'aquasec/trivy:latest'
    image_templates:
    - 'aquasec/trivy:{{ .Version }}-amd64'
    - 'aquasec/trivy:{{ .Version }}-arm64'
    - 'aquasec/trivy:{{ .Version }}-s390x'
    - 'aquasec/trivy:{{ .Version }}-ppc64le'
  - name_template: 'ghcr.io/aquasecurity/trivy:latest'
    image_templates:
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-amd64'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-arm64'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-s390x'
    - 'ghcr.io/aquasecurity/trivy:{{ .Version }}-ppc64le'
  - name_template: 'public.ecr.aws/aquasecurity/trivy:latest'
    image_templates:
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-amd64'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-arm64'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-s390x'
    - 'public.ecr.aws/aquasecurity/trivy:{{ .Version }}-ppc64le'

signs:
- cmd: cosign
  env:
  - COSIGN_EXPERIMENTAL=1
  signature: "${artifact}.sigstore.json"
  args:
    - "sign-blob"
    - "--bundle=${signature}"
    - "${artifact}"
    - "--yes"
  artifacts: all
  output: true

docker_signs:
- cmd: cosign
  env:
  - COSIGN_EXPERIMENTAL=1
  artifacts: manifests
  output: true
  args:
  - 'sign'
  - '${artifact}'
  - '--yes'
