diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ae88e75 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +# This GitHub action can publish assets for release when a tag is created. +# Currently its setup to run on any tag that matches the pattern "v*" (ie. v0.1.0). +# +# This uses an action (paultyng/ghaction-import-gpg) that assumes you set your +# private key in the `GPG_PRIVATE_KEY` secret and passphrase in the `PASSPHRASE` +# secret. If you would rather own your own GPG handling, please fork this action +# or use an alternative one for key handling. +# +# You will need to pass the `--batch` flag to `gpg` in your signing step +# in `goreleaser` to indicate this is being used in a non-interactive mode. +# + +name: release + +on: + push: + tags: + - 'v*' + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Unshallow + run: git fetch --prune --unshallow + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.21.0' + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v4 + with: + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..3f2bfe3 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: 2023 Christoph Mewes +# SPDX-License-Identifier: MIT + +builds: + - dir: cmd/otti + env: + # goreleaser does not work with CGO, it could also complicate + # usage by users in CI/CD systems like Terraform Cloud where + # they are unable to install libraries. + - CGO_ENABLED=0 + mod_timestamp: '{{ .CommitTimestamp }}' + flags: + - -trimpath + ldflags: + - '-s -w -X main.BuildTag={{.Version}} -X main.BuildCommit={{.Commit}} -X main.BuildDate={{.Date}}' + goos: + - darwin + - freebsd + - linux + - windows + goarch: + - amd64 + - '386' + - arm64 + ignore: + - goos: darwin + goarch: '386' + - goos: freebsd + goarch: '386' + - goos: windows + goarch: '386' + binary: '{{ .ProjectName }}' +archives: + - format: tar.gz + name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}' + wrap_in_directory: true + strip_parent_binary_folder: true + format_overrides: + - goos: windows + format: zip +checksum: + disable: true