diff --git a/.github/workflows/pr-goreleaser.yml b/.github/workflows/pr-goreleaser.yml new file mode 100644 index 000000000..8b5eec5bd --- /dev/null +++ b/.github/workflows/pr-goreleaser.yml @@ -0,0 +1,29 @@ +name: Verify goreleaser change + +on: + pull_request: + branches: + - 'main' + - 'release-**' + paths: + - '.goreleaser.yml' + - 'hack/release-tools/goreleaser.sh' + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + name: Checkout + + - name: Verify .goreleaser.yml and try a dryrun release. + if: github.repository == 'vmware-tanzu/velero' + run: | + CHANGELOG=$(ls changelogs | sort -V -r | head -n 1) + GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} \ + REGISTRY=velero \ + RELEASE_NOTES_FILE=changelogs/$CHANGELOG \ + PUBLISH=false \ + make release + diff --git a/.goreleaser.yml b/.goreleaser.yml index f30fbe8c2..fa5b82683 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -46,6 +46,9 @@ archives: files: - LICENSE - examples/**/* + # Add the setting to resolve the DEPRECATED warning. Actually, Velero's case is not affected by the rlcp behavior change. + # https://github.com/orgs/goreleaser/discussions/3659#discussioncomment-4587257 + rlcp: true checksum: name_template: 'CHECKSUM' release: @@ -54,3 +57,10 @@ release: name: velero draft: true prerelease: auto + +git: + # What should be used to sort tags when gathering the current and previous + # tags if there are more than one tag in the same commit. + # + # Default: `-version:refname` + tag_sort: -version:creatordate \ No newline at end of file diff --git a/changelogs/unreleased/6109-blackpiglet b/changelogs/unreleased/6109-blackpiglet new file mode 100644 index 000000000..537da2047 --- /dev/null +++ b/changelogs/unreleased/6109-blackpiglet @@ -0,0 +1 @@ +Fix the goreleaser issues and add a new goreleaser action \ No newline at end of file diff --git a/hack/build-image/Dockerfile b/hack/build-image/Dockerfile index dc6f26a6c..66488fd7f 100644 --- a/hack/build-image/Dockerfile +++ b/hack/build-image/Dockerfile @@ -50,7 +50,7 @@ RUN wget --quiet https://github.com/protocolbuffers/protobuf/releases/download/v RUN go install github.com/golang/protobuf/protoc-gen-go@v1.4.3 # get goreleaser -RUN wget --quiet https://github.com/goreleaser/goreleaser/releases/download/v1.12.3/goreleaser_Linux_x86_64.tar.gz && \ +RUN wget --quiet https://github.com/goreleaser/goreleaser/releases/download/v1.15.2/goreleaser_Linux_x86_64.tar.gz && \ tar xvf goreleaser_Linux_x86_64.tar.gz && \ mv goreleaser /usr/bin/goreleaser && \ chmod +x /usr/bin/goreleaser diff --git a/hack/release-tools/goreleaser.sh b/hack/release-tools/goreleaser.sh index 2aa4b1e9f..79f9a4fc5 100755 --- a/hack/release-tools/goreleaser.sh +++ b/hack/release-tools/goreleaser.sh @@ -41,6 +41,10 @@ else export GIT_TREE_STATE=dirty fi +# Verify .goreleaser.yml format first. +echo "Start to verify .goreleaser.yml format" +goreleaser check + # $PUBLISH must explicitly be set to 'TRUE' for goreleaser # to publish the release to GitHub. if [[ "${PUBLISH:-}" != "TRUE" ]]; then @@ -48,12 +52,10 @@ if [[ "${PUBLISH:-}" != "TRUE" ]]; then goreleaser release \ --clean \ --release-notes="${RELEASE_NOTES_FILE}" \ - --skip-publish \ - --config goreleaser.yaml + --snapshot # Generate an unversioned snapshot release, skipping all validations and without publishing any artifacts (implies --skip-publish, --skip-announce and --skip-validate) else echo "Getting ready to publish" goreleaser release \ --clean \ --release-notes="${RELEASE_NOTES_FILE}" - --config goreleaser.yaml fi diff --git a/hack/release-tools/goreleaser.yaml b/hack/release-tools/goreleaser.yaml deleted file mode 100644 index 9bbe47335..000000000 --- a/hack/release-tools/goreleaser.yaml +++ /dev/null @@ -1,6 +0,0 @@ -git: - # What should be used to sort tags when gathering the current and previous - # tags if there are more than one tag in the same commit. - # - # Default: `-version:refname` - tag_sort: -version:creatordate \ No newline at end of file