From 79311da90355250dcd1c840989677de3b418e2af Mon Sep 17 00:00:00 2001 From: Ayaz Salikhov Date: Fri, 25 Apr 2025 20:14:12 +0100 Subject: [PATCH 1/2] feat: Introduce release_impl.yml workflow to automatically create releases --- .github/workflows/nightly.yml | 49 +++---------------- .github/workflows/release_impl.yml | 78 ++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/release_impl.yml diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 610aae099..dda97f5e3 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -100,50 +100,13 @@ jobs: ./clio_integration_tests --backend_host=scylladb nightly_release: - if: ${{ github.event_name != 'pull_request' }} needs: run_tests - runs-on: ubuntu-latest - env: - GH_REPO: ${{ github.repository }} - GH_TOKEN: ${{ github.token }} - permissions: - contents: write - steps: - - uses: actions/checkout@v4 - - - uses: actions/download-artifact@v4 - with: - path: nightly_release - pattern: clio_server_* - - - name: Prepare files - shell: bash - run: | - cp ${{ github.workspace }}/.github/workflows/nightly_notes.md "${RUNNER_TEMP}/nightly_notes.md" - cd nightly_release - echo '' >> "${RUNNER_TEMP}/nightly_notes.md" - echo '```' >> "${RUNNER_TEMP}/nightly_notes.md" - for d in $(ls); do - archive_name=$(ls $d) - mv ${d}/${archive_name} ./ - rm -r $d - sha256sum ./$archive_name > ./${archive_name}.sha256sum - cat ./$archive_name.sha256sum >> "${RUNNER_TEMP}/nightly_notes.md" - done - echo '```' >> "${RUNNER_TEMP}/nightly_notes.md" - - - name: Remove current nightly release and nightly tag - shell: bash - run: | - gh release delete nightly --yes || true - git push origin :nightly || true - - - name: Publish nightly release - shell: bash - run: | - gh release create nightly --prerelease --title "Clio development (nightly) build" \ - --target $GITHUB_SHA --notes-file "${RUNNER_TEMP}/nightly_notes.md" \ - ./nightly_release/clio_server* + uses: ./.github/workflows/release_impl.yml + with: + overwrite_release: true + title: "Clio development (nightly) build" + version: nightly + notes_header_file: nightly_notes.md build_and_publish_docker_image: uses: ./.github/workflows/build_clio_docker_image.yml diff --git a/.github/workflows/release_impl.yml b/.github/workflows/release_impl.yml new file mode 100644 index 000000000..35f0036e7 --- /dev/null +++ b/.github/workflows/release_impl.yml @@ -0,0 +1,78 @@ +name: Make release + +on: + workflow_call: + inputs: + overwrite_release: + description: "Overwrite the current release and tag" + required: true + type: boolean + + title: + description: "Release title" + required: true + type: string + + version: + description: "Release version" + required: true + type: string + + notes_header_file: + description: "Release notes header file" + required: true + type: string + +jobs: + release: + runs-on: ubuntu-latest + env: + GH_REPO: ${{ github.repository }} + GH_TOKEN: ${{ github.token }} + + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + with: + path: release_artifacts + pattern: clio_server_* + + - name: Prepare files + shell: bash + working-directory: release_artifacts + run: | + cp ${{ github.workspace }}/.github/workflows/${{ inputs.notes_header_file }}.md "${RUNNER_TEMP}/release_notes.md" + echo '' >> "${RUNNER_TEMP}/release_notes.md" + echo '```' >> "${RUNNER_TEMP}/release_notes.md" + + for d in $(ls); do + archive_name=$(ls $d) + mv ${d}/${archive_name} ./ + rm -r $d + sha256sum ./$archive_name > ./${archive_name}.sha256sum + cat ./$archive_name.sha256sum >> "${RUNNER_TEMP}/release_notes.md" + done + + echo '```' >> "${RUNNER_TEMP}/release_notes.md" + + - name: Remove current release and tag + if: ${{ github.event_name != 'pull_request' && inputs.overwrite_release }} + shell: bash + run: | + gh release delete ${{ inputs.version }} --yes || true + git push origin :${{ inputs.version }} || true + + - name: Publish release + if: ${{ github.event_name != 'pull_request' }} + shell: bash + run: | + gh release create ${{ inputs.version }} \ + ${{ inputs.overwrite_release && '--prerelease' || '' }} \ + --title ${{ inputs.title }} \ + --target $GITHUB_SHA \ + --notes-file "${RUNNER_TEMP}/release_notes.md" \ + ./release_artifacts/clio_server* From 64c024a383f78b8b7814c651e27e13f21ec9a8ed Mon Sep 17 00:00:00 2001 From: Ayaz Salikhov Date: Fri, 25 Apr 2025 21:11:27 +0100 Subject: [PATCH 2/2] Fix --- .github/workflows/release_impl.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_impl.yml b/.github/workflows/release_impl.yml index 35f0036e7..12eb551e9 100644 --- a/.github/workflows/release_impl.yml +++ b/.github/workflows/release_impl.yml @@ -45,7 +45,7 @@ jobs: shell: bash working-directory: release_artifacts run: | - cp ${{ github.workspace }}/.github/workflows/${{ inputs.notes_header_file }}.md "${RUNNER_TEMP}/release_notes.md" + cp ${{ github.workspace }}/.github/workflows/${{ inputs.notes_header_file }} "${RUNNER_TEMP}/release_notes.md" echo '' >> "${RUNNER_TEMP}/release_notes.md" echo '```' >> "${RUNNER_TEMP}/release_notes.md"