mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 03:45:50 +00:00 
			
		
		
		
	I started with really simple pre-commit hooks and will add more on top. Important files: - `.pre-commit-config.yaml` - the config for pre-commit - `.github/workflows/pre-commit.yml` - runs pre-commit hooks in branches and `develop` - `.github/workflows/pre-commit-autoupdate.yml` - autoupdates pre-commit hooks once in a month
		
			
				
	
	
		
			178 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Nightly release
 | 
						|
on:
 | 
						|
  schedule:
 | 
						|
    - cron:  '0 8 * * 1-5'
 | 
						|
  workflow_dispatch:
 | 
						|
  pull_request:
 | 
						|
    paths:
 | 
						|
      - '.github/workflows/nightly.yml'
 | 
						|
      - '.github/workflows/build_clio_docker_image.yml'
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    name: Build clio
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: macos15
 | 
						|
            build_type: Release
 | 
						|
            static: false
 | 
						|
          - os: heavy
 | 
						|
            build_type: Release
 | 
						|
            static: true
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
          - os: heavy
 | 
						|
            build_type: Debug
 | 
						|
            static: true
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
    uses: ./.github/workflows/build_impl.yml
 | 
						|
    with:
 | 
						|
      runs_on: ${{ matrix.os }}
 | 
						|
      container: ${{ matrix.container }}
 | 
						|
      conan_profile: gcc
 | 
						|
      build_type: ${{ matrix.build_type }}
 | 
						|
      code_coverage: false
 | 
						|
      static: ${{ matrix.static }}
 | 
						|
      unit_tests: true
 | 
						|
      integration_tests: true
 | 
						|
      clio_server: true
 | 
						|
      disable_cache: true
 | 
						|
 | 
						|
  run_tests:
 | 
						|
    needs: build
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: macos15
 | 
						|
            conan_profile: apple_clang_16
 | 
						|
            build_type: Release
 | 
						|
            integration_tests: false
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: gcc
 | 
						|
            build_type: Release
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
            integration_tests: true
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: gcc
 | 
						|
            build_type: Debug
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
            integration_tests: true
 | 
						|
    runs-on: [self-hosted, "${{ matrix.os }}"]
 | 
						|
    container: ${{ matrix.container }}
 | 
						|
 | 
						|
    services:
 | 
						|
      scylladb:
 | 
						|
        image: ${{ (matrix.integration_tests) && 'scylladb/scylla' || '' }}
 | 
						|
        options: >-
 | 
						|
          --health-cmd "cqlsh -e 'describe cluster'"
 | 
						|
          --health-interval 10s
 | 
						|
          --health-timeout 5s
 | 
						|
          --health-retries 5
 | 
						|
 | 
						|
    steps:
 | 
						|
      - name: Clean workdir
 | 
						|
        if: ${{ runner.os == 'macOS' }}
 | 
						|
        uses: kuznetsss/workspace-cleanup@80b9863b45562c148927c3d53621ef354e5ae7ce #v1.0
 | 
						|
 | 
						|
      - uses: actions/download-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_tests_${{ runner.os }}_${{ matrix.build_type }}_${{ matrix.conan_profile }}
 | 
						|
 | 
						|
      - name: Run clio_tests
 | 
						|
        run: |
 | 
						|
          chmod +x ./clio_tests
 | 
						|
          ./clio_tests
 | 
						|
 | 
						|
      - uses: actions/download-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_integration_tests_${{ runner.os }}_${{ matrix.build_type }}_${{ matrix.conan_profile }}
 | 
						|
 | 
						|
  # To be enabled back once docker in mac runner arrives
 | 
						|
  # https://github.com/XRPLF/clio/issues/1400
 | 
						|
      - name: Run clio_integration_tests
 | 
						|
        if: matrix.integration_tests
 | 
						|
        run: |
 | 
						|
          chmod +x ./clio_integration_tests
 | 
						|
          ./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
 | 
						|
          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*
 | 
						|
 | 
						|
  build_and_publish_docker_image:
 | 
						|
    uses: ./.github/workflows/build_clio_docker_image.yml
 | 
						|
    needs: run_tests
 | 
						|
    secrets: inherit
 | 
						|
    with:
 | 
						|
      tags: |
 | 
						|
          type=raw,value=nightly
 | 
						|
          type=raw,value=${{ github.sha }}
 | 
						|
      artifact_name: clio_server_Linux_Release_gcc
 | 
						|
      strip_binary: true
 | 
						|
      publish_image: ${{ github.event_name != 'pull_request' }}
 | 
						|
 | 
						|
  create_issue_on_failure:
 | 
						|
    needs: [build, run_tests, nightly_release, build_and_publish_docker_image]
 | 
						|
    if: ${{ always() && contains(needs.*.result, 'failure') && github.event_name != 'pull_request' }}
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    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 }}/
 |