mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 11:55:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			133 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [release/*, develop]
 | 
						|
  pull_request:
 | 
						|
    branches: [release/*, develop]
 | 
						|
    paths:
 | 
						|
      - .github/workflows/build.yml
 | 
						|
 | 
						|
      - .github/workflows/reusable-build-test.yml
 | 
						|
      - .github/workflows/reusable-build.yml
 | 
						|
      - .github/workflows/reusable-test.yml
 | 
						|
      - .github/workflows/reusable-upload-coverage-report.yml
 | 
						|
 | 
						|
      - ".github/actions/**"
 | 
						|
      - "!.github/actions/build-docker-image/**"
 | 
						|
      - "!.github/actions/create-issue/**"
 | 
						|
 | 
						|
      - CMakeLists.txt
 | 
						|
      - conanfile.py
 | 
						|
      - conan.lock
 | 
						|
      - "cmake/**"
 | 
						|
      - "src/**"
 | 
						|
      - "tests/**"
 | 
						|
 | 
						|
      - docs/config-description.md
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
concurrency:
 | 
						|
  # Develop branch: Each run gets unique group (using run_number) for parallel execution
 | 
						|
  # Other branches: Shared group with cancel-in-progress to stop old runs when new commits are pushed
 | 
						|
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref == 'refs/heads/develop' && github.run_number || 'branch' }}
 | 
						|
  cancel-in-progress: true
 | 
						|
 | 
						|
jobs:
 | 
						|
  build-and-test:
 | 
						|
    name: Build and Test
 | 
						|
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        os: [heavy]
 | 
						|
        conan_profile: [gcc, clang]
 | 
						|
        build_type: [Release, Debug]
 | 
						|
        container:
 | 
						|
          [
 | 
						|
            '{ "image": "ghcr.io/xrplf/clio-ci:b2be4b51d1d81548ca48e2f2b8f67356b880c96d" }',
 | 
						|
          ]
 | 
						|
        static: [true]
 | 
						|
 | 
						|
        include:
 | 
						|
          - os: macos15
 | 
						|
            conan_profile: apple-clang
 | 
						|
            build_type: Release
 | 
						|
            container: ""
 | 
						|
            static: false
 | 
						|
 | 
						|
    uses: ./.github/workflows/reusable-build-test.yml
 | 
						|
    with:
 | 
						|
      runs_on: ${{ matrix.os }}
 | 
						|
      container: ${{ matrix.container }}
 | 
						|
      conan_profile: ${{ matrix.conan_profile }}
 | 
						|
      build_type: ${{ matrix.build_type }}
 | 
						|
      download_ccache: true
 | 
						|
      upload_ccache: true
 | 
						|
      static: ${{ matrix.static }}
 | 
						|
      run_unit_tests: true
 | 
						|
      run_integration_tests: false
 | 
						|
      upload_clio_server: true
 | 
						|
 | 
						|
  code_coverage:
 | 
						|
    name: Run Code Coverage
 | 
						|
 | 
						|
    uses: ./.github/workflows/reusable-build.yml
 | 
						|
    with:
 | 
						|
      runs_on: heavy
 | 
						|
      container: '{ "image": "ghcr.io/xrplf/clio-ci:b2be4b51d1d81548ca48e2f2b8f67356b880c96d" }'
 | 
						|
      conan_profile: gcc
 | 
						|
      build_type: Debug
 | 
						|
      download_ccache: true
 | 
						|
      upload_ccache: false
 | 
						|
      code_coverage: true
 | 
						|
      static: true
 | 
						|
      upload_clio_server: false
 | 
						|
      targets: all
 | 
						|
      analyze_build_time: false
 | 
						|
    secrets:
 | 
						|
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
 | 
						|
 | 
						|
  package:
 | 
						|
    name: Build packages
 | 
						|
 | 
						|
    uses: ./.github/workflows/reusable-build.yml
 | 
						|
    with:
 | 
						|
      runs_on: heavy
 | 
						|
      container: '{ "image": "ghcr.io/xrplf/clio-ci:b2be4b51d1d81548ca48e2f2b8f67356b880c96d" }'
 | 
						|
      conan_profile: gcc
 | 
						|
      build_type: Release
 | 
						|
      download_ccache: true
 | 
						|
      upload_ccache: false
 | 
						|
      code_coverage: false
 | 
						|
      static: true
 | 
						|
      upload_clio_server: false
 | 
						|
      package: true
 | 
						|
      targets: package
 | 
						|
      analyze_build_time: false
 | 
						|
 | 
						|
  check_config:
 | 
						|
    name: Check Config Description
 | 
						|
    needs: build-and-test
 | 
						|
    runs-on: heavy
 | 
						|
    container:
 | 
						|
      image: ghcr.io/xrplf/clio-ci:b2be4b51d1d81548ca48e2f2b8f67356b880c96d
 | 
						|
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
 | 
						|
      - uses: actions/download-artifact@v5
 | 
						|
        with:
 | 
						|
          name: clio_server_Linux_Release_gcc
 | 
						|
 | 
						|
      - name: Compare Config Description
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          repoConfigFile=docs/config-description.md
 | 
						|
          configDescriptionFile=config_description_new.md
 | 
						|
 | 
						|
          chmod +x ./clio_server
 | 
						|
          ./clio_server -d "${configDescriptionFile}"
 | 
						|
 | 
						|
          diff -u "${repoConfigFile}" "${configDescriptionFile}"
 |