# Copyright (c) The OpenTofu Authors # SPDX-License-Identifier: MPL-2.0 # Copyright (c) 2023 HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 project_name: tofu before: hooks: - go mod tidy - go generate ./... - make protobuf builds: - env: - CGO_ENABLED=0 main: ./cmd/tofu flags: - "-mod=readonly" - "-trimpath" ldflags: - "-s -w" - "-X 'github.com/opentofu/opentofu/version.dev=no'" goos: - linux - windows - darwin - freebsd - openbsd - solaris goarch: - "386" - amd64 - arm - arm64 ignore: - goos: freebsd goarch: arm64 - goos: openbsd goarch: arm - goos: openbsd goarch: arm64 - goos: solaris goarch: "386" - goos: solaris goarch: arm - goos: solaris goarch: arm64 - goos: windows goarch: arm - goos: windows goarch: arm64 - goos: darwin goarch: "386" - goos: darwin goarch: arm archives: - format: tar.gz id: targz name_template: "{{ .ProjectName }}_{{ .Version }}_{{- .Os }}_{{- .Arch }}" - format: zip id: zip name_template: "{{ .ProjectName }}_{{ .Version }}_{{- .Os }}_{{- .Arch }}" dockers: - use: buildx goarch: amd64 build_flag_templates: - "--pull" - "--platform=linux/amd64" - "--label=org.opencontainers.image.title={{ .ProjectName }}" - "--label=org.opencontainers.image.vendor=OpenTofu" - "--label=org.opencontainers.image.description=OpenTofu {{ .Version }}" - "--label=org.opencontainers.image.url=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.documentation=https://github.com/opentofu/opentofu/blob/main/README.md" - "--label=org.opencontainers.image.source=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.licenses=MPL-2.0" - "--label=org.opencontainers.image.version={{ .Version }}" - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - "--label=org.opencontainers.image.created={{ time \"2006-01-02T15:04:05Z07:00\" }}" image_templates: - "ghcr.io/opentofu/opentofu:{{ .Version }}-amd64" - use: buildx goarch: arm64 build_flag_templates: - "--pull" - "--platform=linux/arm64" - "--label=org.opencontainers.image.title={{ .ProjectName }}" - "--label=org.opencontainers.image.vendor=OpenTofu" - "--label=org.opencontainers.image.description=OpenTofu {{ .Version }}" - "--label=org.opencontainers.image.url=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.documentation=https://github.com/opentofu/opentofu/blob/main/README.md" - "--label=org.opencontainers.image.source=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.licenses=MPL-2.0" - "--label=org.opencontainers.image.version={{ .Version }}" - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - "--label=org.opencontainers.image.created={{ time \"2006-01-02T15:04:05Z07:00\" }}" image_templates: - "ghcr.io/opentofu/opentofu:{{ .Version }}-arm64" - use: buildx goarch: arm build_flag_templates: - "--pull" - "--platform=linux/arm" - "--label=org.opencontainers.image.title={{ .ProjectName }}" - "--label=org.opencontainers.image.vendor=OpenTofu" - "--label=org.opencontainers.image.description=OpenTofu {{ .Version }}" - "--label=org.opencontainers.image.url=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.documentation=https://github.com/opentofu/opentofu/blob/main/README.md" - "--label=org.opencontainers.image.source=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.licenses=MPL-2.0" - "--label=org.opencontainers.image.version={{ .Version }}" - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - "--label=org.opencontainers.image.created={{ time \"2006-01-02T15:04:05Z07:00\" }}" image_templates: - "ghcr.io/opentofu/opentofu:{{ .Version }}-arm" - use: buildx goarch: "386" build_flag_templates: - "--pull" - "--platform=linux/386" - "--label=org.opencontainers.image.title={{ .ProjectName }}" - "--label=org.opencontainers.image.vendor=OpenTofu" - "--label=org.opencontainers.image.description=OpenTofu {{ .Version }}" - "--label=org.opencontainers.image.url=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.documentation=https://github.com/opentofu/opentofu/blob/main/README.md" - "--label=org.opencontainers.image.source=https://github.com/opentofu/opentofu" - "--label=org.opencontainers.image.licenses=MPL-2.0" - "--label=org.opencontainers.image.version={{ .Version }}" - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - "--label=org.opencontainers.image.created={{ time \"2006-01-02T15:04:05Z07:00\" }}" image_templates: - "ghcr.io/opentofu/opentofu:{{ .Version }}-386" docker_manifests: - name_template: ghcr.io/opentofu/opentofu:{{ .Version }} image_templates: - ghcr.io/opentofu/opentofu:{{ .Version }}-amd64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm - ghcr.io/opentofu/opentofu:{{ .Version }}-386 - name_template: ghcr.io/opentofu/opentofu:{{ .Major }}.{{ .Minor }} image_templates: - ghcr.io/opentofu/opentofu:{{ .Version }}-amd64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm - ghcr.io/opentofu/opentofu:{{ .Version }}-386 skip_push: auto # Skips the push on pre-release versions, like 1.6.1-alpha1. See https://goreleaser.com/customization/docker_manifest/#customization - name_template: ghcr.io/opentofu/opentofu:{{ .Major }} image_templates: - ghcr.io/opentofu/opentofu:{{ .Version }}-amd64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm - ghcr.io/opentofu/opentofu:{{ .Version }}-386 skip_push: auto # Skips the push on pre-release versions, like 1.6.1-alpha1. See https://goreleaser.com/customization/docker_manifest/#customization - name_template: ghcr.io/opentofu/opentofu:latest image_templates: - ghcr.io/opentofu/opentofu:{{ .Version }}-amd64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm64 - ghcr.io/opentofu/opentofu:{{ .Version }}-arm - ghcr.io/opentofu/opentofu:{{ .Version }}-386 skip_push: auto # Skips the push on pre-release versions, like 1.6.1-alpha1. See https://goreleaser.com/customization/docker_manifest/#customization nfpms: - file_name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Arch }}' maintainer: 'https://github.com/orgs/opentofu/teams/opentofu-core-team' homepage: https://opentofu.org description: >- OpenTofu lets you declaratively manage your cloud infrastructure. license: "MPL-2.0" formats: - deb - rpm - apk bindir: /usr/bin section: default contents: - src: ./LICENSE dst: /usr/share/doc/opentofu/copyright file_info: mode: 0444 rpm: signature: key_file: "{{ if index .Env \"GPG_KEY_FILE\" }}{{.Env.GPG_KEY_FILE}}{{ end }}" deb: signature: key_file: "{{ if index .Env \"GPG_KEY_FILE\" }}{{.Env.GPG_KEY_FILE}}{{ end }}" snapcrafts: - name: opentofu publish: true summary: OpenTofu lets you declaratively manage your cloud infrastructure. description: | OpenTofu is an OSS tool for building, changing, and versioning infrastructure safely and efficiently. OpenTofu can manage existing and popular service providers as well as custom in-house solutions. disable: '{{ if eq .Env.RELEASE_FLAG_LATEST "false" }}true{{ else }}false{{ end }}' channel_templates: - '{{ if eq .Env.RELEASE_FLAG_PRERELEASE "true" }}latest/edge{{ else }}latest/stable{{ end }}' grade: '{{ if eq .Env.RELEASE_FLAG_PRERELEASE "true" }}devel{{ else }}stable{{ end }}' confinement: classic license: MPL-2.0 base: core22 apps: tofu: command: tofu aliases: [tofu] checksum: name_template: "{{ .ProjectName }}_{{ .Version }}_SHA256SUMS" signs: - artifacts: all id: cosign cmd: cosign certificate: "${artifact}.pem" args: [ "sign-blob", "--oidc-issuer=https://token.actions.githubusercontent.com", "--output-certificate=${certificate}", "--output-signature=${signature}", "${artifact}", "--yes" ] - artifacts: all signature: "${artifact}.gpgsig" id: gpg cmd: gpg args: ["--batch", "-u", "{{ .Env.GPG_FINGERPRINT }}", "--output", "${signature}", "--detach-sign", "${artifact}" ] docker_signs: - artifacts: all args: [ "sign", "--oidc-issuer=https://token.actions.githubusercontent.com", "${artifact}@${digest}", "--yes" ] snapshot: name_template: "{{ .Version }}-next" changelog: use: github-native release: prerelease: auto draft: true