mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 03:45:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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:213752862ca95ecadeb59a6176c3db91a7864b3e
 | 
						|
    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*
 |