diff --git a/.github/workflows/build-integration.yml b/.github/workflows/build-integration.yml index 21a1665..5953190 100644 --- a/.github/workflows/build-integration.yml +++ b/.github/workflows/build-integration.yml @@ -70,27 +70,56 @@ jobs: - name: Run integration tests run: make test-integration - release: - if: contains('refs/heads/master', github.ref) - needs: integration + need-release: runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + needs: + - integration + # If we are on main, check if we need to release + if: ${{ contains('refs/heads/main', github.ref) }} + outputs: + release: ${{ steps.get_version.outputs.release }} + version: ${{ steps.get_version.outputs.version }} steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v3 with: - go-version: 1.17.3 - - name: Release - run: |- + fetch-depth: 0 + # Check our DRAUPNIR_VERSION file against that in git, to see if we need to release + - name: Get version + id: get_version + run: | CURRENT_VERSION="v$(cat DRAUPNIR_VERSION)" + echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT if [[ $(git tag -l "${CURRENT_VERSION}") == "${CURRENT_VERSION}" ]]; then echo "Version ${CURRENT_VERSION} is already released" - exit 0 + echo "release=false" >> $GITHUB_OUTPUT + else + echo "Version ${CURRENT_VERSION} can be released" + echo "release=true" >> $GITHUB_OUTPUT fi - curl -L -o /tmp/goreleaser_Linux_x86_64.tar.gz https://github.com/goreleaser/goreleaser/releases/download/v1.10.2/goreleaser_Linux_x86_64.tar.gz - tar zxf /tmp/goreleaser_Linux_x86_64.tar.gz -C /tmp - git log --pretty=oneline --abbrev-commit --no-decorate --no-color "$(git describe --tags --abbrev=0)..HEAD" -- pkg cmd vendor internal > /tmp/release-notes - git tag "${CURRENT_VERSION}" - git push --tags - /tmp/goreleaser --rm-dist --release-notes /tmp/release-notes + + # expose env vars to release job + release-vars: + needs: need-release + runs-on: ubuntu-latest + # Only run if we will need to release + if: ${{ needs.need-release.outputs.release == 'true' }} + outputs: + go_version: ${{ env.GO_VERSION }} + steps: + - run: echo "Exposing env vars" + + release: + needs: + - need-release + - release-vars + # Only release if we need to + if: ${{ needs.need-release.outputs.release == 'true' }} + uses: gocardless/github-actions/.github/workflows/go-gorelease.yml@4763f2059fe34efe265ea7cb1ec5f9884c46169d + with: + release_notes: $(git log --pretty=oneline --abbrev-commit --no-decorate --no-color "$(git describe --tags --abbrev=0)..HEAD" -- pkg cmd vendor internal | tee -a /tmp/release-notes) + repository: ${{ github.repository }} + go_version: ${{ needs.release-vars.outputs.go_version }} + secrets: + goreleaser_pat: ${{ secrets.GOCARDLESS_CI_ROBOT_TOKEN }} + service_account: ${{ secrets.GCR_PUSHER_SERVICE_ACCOUNT }} + workload_identity_provider: ${{ secrets.KEYLESS_PROVIDER_NAME }} \ No newline at end of file