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
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [master, release/*, develop]
 | 
						|
  pull_request:
 | 
						|
    branches: [master, release/*, develop]
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
jobs:
 | 
						|
  check_format:
 | 
						|
    name: Check format
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    container:
 | 
						|
      image: rippleci/clio_ci:latest
 | 
						|
    steps:
 | 
						|
      - name: Fix git permissions on Linux
 | 
						|
        shell: bash
 | 
						|
        run: git config --global --add safe.directory $PWD
 | 
						|
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
      - name: Run formatters
 | 
						|
        id: run_formatters
 | 
						|
        run: |
 | 
						|
          ./.githooks/check-format --diff
 | 
						|
        shell: bash
 | 
						|
 | 
						|
  check_docs:
 | 
						|
    name: Check documentation
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    container:
 | 
						|
      image: rippleci/clio_ci:latest
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
      - name: Run linter
 | 
						|
        id: run_linter
 | 
						|
        run: |
 | 
						|
          ./.githooks/check-docs
 | 
						|
        shell: bash
 | 
						|
 | 
						|
  build:
 | 
						|
    name: Build
 | 
						|
    needs:
 | 
						|
      - check_format
 | 
						|
      - check_docs
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: gcc
 | 
						|
            build_type: Release
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
            code_coverage: false
 | 
						|
            static: true
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: gcc
 | 
						|
            build_type: Debug
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
            code_coverage: true
 | 
						|
            static: true
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: clang
 | 
						|
            build_type: Release
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
            code_coverage: false
 | 
						|
            static: true
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: clang
 | 
						|
            build_type: Debug
 | 
						|
            container: '{ "image": "rippleci/clio_ci:latest" }'
 | 
						|
            code_coverage: false
 | 
						|
            static: true
 | 
						|
          - os: macos15
 | 
						|
            build_type: Release
 | 
						|
            code_coverage: false
 | 
						|
            static: false
 | 
						|
    uses: ./.github/workflows/build_impl.yml
 | 
						|
    with:
 | 
						|
      runs_on: ${{ matrix.os }}
 | 
						|
      container: ${{ matrix.container }}
 | 
						|
      conan_profile: ${{ matrix.conan_profile }}
 | 
						|
      build_type: ${{ matrix.build_type }}
 | 
						|
      code_coverage: ${{ matrix.code_coverage }}
 | 
						|
      static: ${{ matrix.static }}
 | 
						|
      unit_tests: true
 | 
						|
      integration_tests: true
 | 
						|
      clio_server: true
 | 
						|
 | 
						|
  test:
 | 
						|
    name: Run Tests
 | 
						|
    needs: build
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        include:
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: gcc
 | 
						|
            build_type: Release
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: clang
 | 
						|
            build_type: Release
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
          - os: heavy
 | 
						|
            conan_profile: clang
 | 
						|
            build_type: Debug
 | 
						|
            container:
 | 
						|
              image: rippleci/clio_ci:latest
 | 
						|
          - os: macos15
 | 
						|
            conan_profile: apple_clang_16
 | 
						|
            build_type: Release
 | 
						|
    runs-on: ${{ matrix.os }}
 | 
						|
    container: ${{ matrix.container }}
 | 
						|
 | 
						|
    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
 | 
						|
 | 
						|
  check_config:
 | 
						|
    name: Check Config Description
 | 
						|
    needs: build
 | 
						|
    runs-on: heavy
 | 
						|
    container:
 | 
						|
      image: rippleci/clio_ci:latest
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
      - uses: actions/download-artifact@v4
 | 
						|
        with:
 | 
						|
          name: clio_server_Linux_Release_gcc
 | 
						|
      - name: Compare Config Description
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          repoConfigFile=docs/config-description.md
 | 
						|
          if ! [ -f ${repoConfigFile} ]; then
 | 
						|
            echo "Config Description markdown file is missing in docs folder"
 | 
						|
            exit 1
 | 
						|
          fi
 | 
						|
 | 
						|
          chmod +x ./clio_server
 | 
						|
          configDescriptionFile=config_description_new.md
 | 
						|
          ./clio_server -d ${configDescriptionFile}
 | 
						|
 | 
						|
          configDescriptionHash=$(sha256sum ${configDescriptionFile} | cut -d' ' -f1)
 | 
						|
          repoConfigHash=$(sha256sum ${repoConfigFile} | cut -d' ' -f1)
 | 
						|
 | 
						|
          if [ ${configDescriptionHash} != ${repoConfigHash} ]; then
 | 
						|
            echo "Markdown file is not up to date"
 | 
						|
            diff -u "${repoConfigFile}" "${configDescriptionFile}"
 | 
						|
            rm -f ${configDescriptionFile}
 | 
						|
            exit 1
 | 
						|
          fi
 | 
						|
          rm -f ${configDescriptionFile}
 | 
						|
          exit 0
 |