mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 11:55:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Nightly release
 | 
						|
on:
 | 
						|
  schedule:
 | 
						|
    - cron:  '0 5 * * 1-5'
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    name: Build clio
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: macos14
 | 
						|
            build_type: Release
 | 
						|
          - os: heavy
 | 
						|
            build_type: Release
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
          - os: heavy
 | 
						|
            build_type: Debug
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
    runs-on: [self-hosted, "${{ matrix.os }}"]
 | 
						|
    container: ${{ matrix.container }}
 | 
						|
 | 
						|
    steps:
 | 
						|
      - name: Clean workdir
 | 
						|
        if: ${{ runner.os == 'macOS' }}
 | 
						|
        uses: kuznetsss/workspace-cleanup@1.0
 | 
						|
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
        with:
 | 
						|
            fetch-depth: 0
 | 
						|
 | 
						|
      - name: Prepare runner
 | 
						|
        uses: ./.github/actions/prepare_runner
 | 
						|
        with:
 | 
						|
            disable_ccache: true
 | 
						|
 | 
						|
      - name: Setup conan
 | 
						|
        uses: ./.github/actions/setup_conan
 | 
						|
        id: conan
 | 
						|
        with:
 | 
						|
          conan_profile: gcc
 | 
						|
 | 
						|
      - name: Run conan and cmake
 | 
						|
        uses: ./.github/actions/generate
 | 
						|
        with:
 | 
						|
          conan_profile: ${{ steps.conan.outputs.conan_profile }}
 | 
						|
          conan_cache_hit: ${{ steps.restore_cache.outputs.conan_cache_hit }}
 | 
						|
          build_type: ${{ matrix.build_type }}
 | 
						|
 | 
						|
      - name: Build Clio
 | 
						|
        uses: ./.github/actions/build_clio
 | 
						|
 | 
						|
      - name: Strip tests
 | 
						|
        run: strip build/clio_tests
 | 
						|
 | 
						|
      - name: Upload clio_tests
 | 
						|
        uses: actions/upload-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_tests_${{ runner.os }}_${{ matrix.build_type }}
 | 
						|
          path: build/clio_tests
 | 
						|
 | 
						|
      - name: Compress clio_server
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
            cd build
 | 
						|
            tar czf ./clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz ./clio_server
 | 
						|
 | 
						|
      - name: Upload clio_server
 | 
						|
        uses: actions/upload-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_server_${{ runner.os }}_${{ matrix.build_type }}
 | 
						|
          path: build/clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz
 | 
						|
 | 
						|
 | 
						|
  run_tests:
 | 
						|
    needs: build
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: macos14
 | 
						|
            build_type: Release
 | 
						|
          - os: heavy
 | 
						|
            build_type: Release
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
          - os: heavy
 | 
						|
            build_type: Debug
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
    runs-on: [self-hosted, "${{ matrix.os }}"]
 | 
						|
    container: ${{ matrix.container }}
 | 
						|
 | 
						|
    steps:
 | 
						|
      - name: Clean workdir
 | 
						|
        if: ${{ runner.os == 'macOS' }}
 | 
						|
        uses: kuznetsss/workspace-cleanup@1.0
 | 
						|
 | 
						|
      - uses: actions/download-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_tests_${{ runner.os }}_${{ matrix.build_type }}
 | 
						|
 | 
						|
      - name: Run clio_tests
 | 
						|
        run: |
 | 
						|
          chmod +x ./clio_tests
 | 
						|
          ./clio_tests --gtest_filter="-BackendCassandraBaseTest*:BackendCassandraTest*:BackendCassandraFactoryTestWithDB*"
 | 
						|
 | 
						|
  nightly_release:
 | 
						|
    needs: run_tests
 | 
						|
    runs-on: ubuntu-20.04
 | 
						|
    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
 | 
						|
 | 
						|
      - name: Prepare files
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          cp ${{ github.workspace }}/.github/workflows/nightly_notes.md "${RUNNER_TEMP}/nightly_notes.md"
 | 
						|
          cd nightly_release
 | 
						|
          rm -r clio_tests*
 | 
						|
          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*
 | 
						|
 | 
						|
  create_issue_on_failure:
 | 
						|
    needs: [build, run_tests, nightly_release]
 | 
						|
    if: ${{ always() && contains(needs.*.result, 'failure') }}
 | 
						|
    runs-on: ubuntu-20.04
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
      issues: write
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
 | 
						|
      - name: Create an issue
 | 
						|
        uses: ./.github/actions/create_issue
 | 
						|
        env:
 | 
						|
          GH_TOKEN: ${{ github.token }}
 | 
						|
        with:
 | 
						|
          title: 'Nightly release failed 🌙'
 | 
						|
          body: >
 | 
						|
            Nightly release failed:
 | 
						|
 | 
						|
            Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
 |