name: Make release on: workflow_call: inputs: overwrite_release: description: "Overwrite the current release and tag" required: true type: boolean prerelease: description: "Create a prerelease" required: true type: boolean title: description: "Release title" required: true type: string version: description: "Release version" required: true type: string header: description: "Release notes header" required: true type: string generate_changelog: description: "Generate changelog" required: true type: boolean draft: description: "Create a draft release" required: true type: boolean jobs: release: runs-on: heavy container: image: ghcr.io/xrplf/clio-ci:0e8896ad064a5290c4805318b549df16403ca2d7 env: GH_REPO: ${{ github.repository }} GH_TOKEN: ${{ github.token }} permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Prepare runner uses: XRPLF/actions/.github/actions/prepare-runner@7951b682e5a2973b28b0719a72f01fc4b0d0c34f with: disable_ccache: true - uses: actions/download-artifact@v5 with: path: release_artifacts pattern: clio_server_* - name: Create release notes shell: bash run: | echo "# Release notes" > "${RUNNER_TEMP}/release_notes.md" echo "" >> "${RUNNER_TEMP}/release_notes.md" printf '%s\n' "${{ inputs.header }}" >> "${RUNNER_TEMP}/release_notes.md" - name: Generate changelog shell: bash if: ${{ inputs.generate_changelog }} run: | LAST_TAG="$(gh release view --json tagName -q .tagName --repo XRPLF/clio)" LAST_TAG_COMMIT="$(git rev-parse $LAST_TAG)" BASE_COMMIT="$(git merge-base HEAD $LAST_TAG_COMMIT)" git-cliff "${BASE_COMMIT}..HEAD" --ignore-tags "nightly|-b|-rc" cat CHANGELOG.md >> "${RUNNER_TEMP}/release_notes.md" - name: Prepare release artifacts shell: bash run: .github/scripts/prepare-release-artifacts.sh release_artifacts - name: Upload release notes uses: actions/upload-artifact@v4 with: name: release_notes_${{ inputs.version }} path: "${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.prerelease && '--prerelease' || '' }} \ --title "${{ inputs.title }}" \ --target "${GITHUB_SHA}" \ ${{ inputs.draft && '--draft' || '' }} \ --notes-file "${RUNNER_TEMP}/release_notes.md" \ ./release_artifacts/clio_server*