diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4412ed0b..da4ae9dd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -213,7 +213,7 @@ jobs: if: ${{ steps.check_version_updated.outputs.updated == 'true'}} uses: mathieudutour/github-tag-action@v6.1 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ secrets.PAT_MGOERENS }} custom_tag: ${{ steps.check_version_in_PR.outputs.PR_version }} tag_prefix: "" commit_sha: ${{ steps.master_sha.outputs.origin_master_sha }} @@ -252,4 +252,4 @@ jobs: imageReference=quay.io/redhat-certification/chart-verifier podman pull ${imageReference}:${{ steps.check_version_in_PR.outputs.PR_version }} podman tag ${imageReference}:${{ steps.check_version_in_PR.outputs.PR_version }} ${imageReference}:latest - podman push ${imageReference}:latest \ No newline at end of file + podman push ${imageReference}:latest diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ada97558..0a2bbe8f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -3,30 +3,44 @@ name: create release on new tags on: push: # Publish semver tags as releases. - tags: [ '*.*.*' ] - # [0-9]+.[0-9]+.[0-9]+ + tags: '[0-9]+.[0-9]+.[0-9]+' jobs: - build-and-push: - + build-and-release: + name: Create GitHub release runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version-file: go.mod + + - name: Print tag to GITHUB_OUTPUT + id: get_tag + run: | + echo "release_version=${GITHUB_REF#refs/*/}" | tee -a $GITHUB_OUTPUT + - name: Build binary and make tarball id: build_bin run: | make bin - tar -zcvf chart-verifier.tgz -C out/ chart-verifier - export TARBALL_PATH=$(realpath chart-verifier.tgz) - echo "tarball_path=$TARBALL_PATH" + TARBALL_NAME="chart-verifier.tgz-${{ steps.get_tag.outputs.release_version }}.tgz" + tar -zcvf $TARBALL_NAME -C out/ chart-verifier + export TARBALL_PATH=$(realpath $TARBALL_NAME) + echo "tarball_path=$TARBALL_PATH" | tee -a $GITHUB_OUTPUT - - name: Print tag to GITHUB_OUTPUT - id: get_tag + - name: Check that the tag matches the current version + id: check_tag_and_version run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + release_version=${{ steps.get_tag.outputs.release_version }} + bin_version=$(out/chart-verifier version --as-data | jq -r .version) + if [[ "$release_version" != "$bin_version" ]]; then + echo "Binary version ($bin_version) doesn't match tag ($release_version)" && exit 1 + fi - name: Set up Python 3.x uses: actions/setup-python@v2 @@ -42,14 +56,14 @@ jobs: - name: Generate release body id: release_body - run: ve1/bin/print-release-body + run: echo "release_body=$(ve1/bin/print-release-body)" | tee -a $GITHUB_OUTPUT - name: Create the the release id: create_release uses: softprops/action-gh-release@v1 with: - tag_name: ${{ steps.get_tag.outputs.RELEASE_VERSION }} - body: ${{ steps.release_body.outputs.PR_release_body }} + tag_name: ${{ steps.get_tag.outputs.release_version }} + body: ${{ steps.release_body.outputs.release_body }} files: ${{ steps.build_bin.outputs.tarball_path }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/src/release/releasebody.py b/scripts/src/release/releasebody.py index 0a9890ae..b9b4c7ef 100644 --- a/scripts/src/release/releasebody.py +++ b/scripts/src/release/releasebody.py @@ -4,7 +4,8 @@ from release import releasechecker from utils import utils -def make_release_body(version, image_name, release_info): +def get_release_body(version, image_name, release_info): + """Generate the body of the GitHub release""" body = f"Chart verifier version {version}

Docker Image:
- {image_name}:{version}

" body += "This version includes:
" for info in release_info: @@ -12,14 +13,9 @@ def make_release_body(version, image_name, release_info): body += info else: body += f"- {info}
" - - print(f"[INFO] Release body: {body}") - utils.add_output("PR_release_body",body) + return body def main(): version_info = releasechecker.get_version_info() - make_release_body(version_info["version"],version_info["quay-image"],version_info["release-info"]) - # tarfile = create(args.release) - # print(f'[INFO] Verifier tarball created : {tarfile}.') - # utils.add_output("tarball_full_name",tarfile) - + release_body = get_release_body(version_info["version"],version_info["quay-image"],version_info["release-info"]) + print(release_body) diff --git a/scripts/src/release/releasechecker.py b/scripts/src/release/releasechecker.py index a98189eb..c8152f90 100644 --- a/scripts/src/release/releasechecker.py +++ b/scripts/src/release/releasechecker.py @@ -99,7 +99,8 @@ def main(): utils.add_output("PR_release_image",version_info["quay-image"]) utils.add_output("PR_release_info",version_info["release-info"]) utils.add_output("PR_includes_release","true") - releasebody.make_release_body(version_info["version"],version_info["quay-image"],version_info["release-info"]) + release_body = releasebody.get_release_body(version_info["version"],version_info["quay-image"],version_info["release-info"]) + utils.add_output("PR_release_body",release_body) else: version_info = get_version_info() if args.version: