diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..dd799862 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,44 @@ +# Copyright 2024 The Nephio Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: porchctl Release +on: + push: + tags: + - "v[1-9].*.*" + +jobs: + build: + runs-on: ubuntu-latest + name: porchctl-release + outputs: + hashes: ${{ steps.hash.outputs.hashes }} + steps: + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '>=1.21.5' + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Run GoReleaser + id: run-goreleaser + uses: goreleaser/goreleaser-action@v5 + with: + distribution: goreleaser + version: latest + args: release --skip-validate -f release/tag/goreleaser.yaml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/release/tag/goreleaser.yaml b/release/tag/goreleaser.yaml new file mode 100644 index 00000000..c2750fc4 --- /dev/null +++ b/release/tag/goreleaser.yaml @@ -0,0 +1,92 @@ +# Copyright 2024 The Nephio Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This defines the build for goreleaser (https://goreleaser.com/). It is +# executed through a Github Action that is triggered by new tags being created +# in the porch repo. +# As porch needs to be compiled with CGO, we cannot simply just provide a simple +# matrix of GOOS and GOARCH combinations, but instead, we'd need to define separate +# steps for each targeted OS and ARCH. This is because we need to specify the +# platform specific C std library (libc) and cross-compiler to be used. +env: + - CGO_ENABLED=0 + - GO111MODULE=on +builds: + - id: darwin-amd64 + env: + - CGO_ENABLED=0 + - GO111MODULE=on + goos: + - darwin + goarch: + - amd64 + ldflags: -s -w + main: ./cmd/porchctl + + - id: darwin-arm64 + env: + - CGO_ENABLED=0 + - GO111MODULE=on + goos: + - darwin + goarch: + - arm64 + ldflags: -s -w + main: ./cmd/porchctl + + - id: linux-amd64 + env: + - CGO_ENABLED=0 + - GO111MODULE=on + goos: + - linux + goarch: + - amd64 + ldflags: -s -w -extldflags "-z noexecstack" + main: ./cmd/porchctl + + - id: linux-arm64 + env: + - CGO_ENABLED=0 + - GO111MODULE=on + goos: + - linux + goarch: + - arm64 + ldflags: -s -w -extldflags "-z noexecstack" + main: ./cmd/porchctl + + +checksum: + name_template: "checksums.txt" +snapshot: + name_template: "main" +changelog: + sort: asc + filters: + exclude: + - "(?i)^docs:" + - "(?i)^test:" + - "(?i)^regenerate docs" + - Merge pull request + - Merge branch + +project_name: porchctl + +release: + github: + owner: nephio-project + name: porch + draft: false + prerelease: "true"