From 2496d2567d5ee55f4b71e794a13c05f14ff27c0d Mon Sep 17 00:00:00 2001 From: Luca Comellini Date: Mon, 15 Aug 2022 18:24:05 -0700 Subject: [PATCH] Add release step, add check for first tag --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ .github/workflows/release.yaml | 16 ++++++++++------ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f868a2b68e..6b2b96c741 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,6 +112,32 @@ jobs: go-version-file: go.mod cache: true + - name: Publish release on tag + uses: actions/github-script@v6 + continue-on-error: true + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const ref = context.ref.split("/")[2] + + const releases = (await github.rest.repos.listReleases({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + per_page: 100, + })).data + + const draft_release = releases.find(release => release.draft && release.tag_name === ref) + + const update = await github.rest.repos.updateRelease({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + release_id: draft_release.id, + draft: false + }); + console.log(`Release published: ${update.data.html_url}`) + console.log(`Release notes: ${update.data.body}`) + if: startsWith(github.ref, 'refs/tags/') + - name: Download Syft uses: anchore/sbom-action/download-syft@v0.11.0 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4921286bac..7855e5cb2b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -44,10 +44,14 @@ jobs: const latest_release_current_branch = releases.find(release => !release.draft && release.tag_name.startsWith("v" + ref.split("-")[1])) if (latest_release_current_branch === undefined){ - latest_release = (await github.rest.repos.getLatestRelease({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - })).data.tag_name + try { + latest_release = (await github.rest.repos.getLatestRelease({ + owner: context.payload.repository.owner.login, + repo: context.payload.repository.name, + })).data.tag_name + } catch (e) { + latest_release = "v0.0.0" + } } else { latest_release = latest_release_current_branch.tag_name } @@ -72,7 +76,7 @@ jobs: owner: context.payload.repository.owner.login, repo: context.payload.repository.name, tag_name: tagTo, - previous_tag_name: tagFrom, + previous_tag_name: semver.gt(tagFrom, '0.0.0') ? tagFrom : '', target_commitish: branch, })).data.body @@ -91,7 +95,7 @@ jobs: owner: context.payload.repository.owner.login, repo: context.payload.repository.name, tag_name: 'v' + version, - previous_tag_name: tagFrom, + previous_tag_name: semver.gt(tagFrom, '0.0.0') ? tagFrom : '', target_commitish: branch, }))