name: Build on: push: branches: [master, release/*, develop] pull_request: branches: [master, release/*, develop] workflow_dispatch: jobs: lint: name: Check format runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - name: Run clang-format uses: ./.github/actions/clang_format build: name: Build needs: lint strategy: fail-fast: false matrix: include: - os: heavy container: image: rippleci/clio_ci:latest build_type: Release code_coverage: false - os: heavy container: image: rippleci/clio_ci:latest build_type: Debug code_coverage: true - os: macOS build_type: Release code_coverage: false runs-on: [self-hosted, "${{ matrix.os }}"] container: ${{ matrix.container }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Prepare runner uses: ./.github/actions/prepare_runner with: disable_ccache: false - name: Setup conan uses: ./.github/actions/setup_conan id: conan - name: Restore cache uses: ./.github/actions/restore_cache id: restore_cache with: conan_dir: ${{ env.CONAN_USER_HOME }}/.conan ccache_dir: ${{ env.CCACHE_DIR }} build_type: ${{ matrix.build_type }} code_coverage: ${{ matrix.code_coverage }} - 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 }} code_coverage: ${{ matrix.code_coverage }} - name: Build Clio uses: ./.github/actions/build_clio - name: Show ccache's statistics shell: bash id: ccache_stats run: | ccache -s > /tmp/ccache.stats miss_rate=$(cat /tmp/ccache.stats | grep 'Misses' | head -n1 | sed 's/.*(\(.*\)%).*/\1/') echo "miss_rate=${miss_rate}" >> $GITHUB_OUTPUT cat /tmp/ccache.stats - name: Strip tests if: ${{ !matrix.code_coverage }} run: strip build/clio_tests - name: Upload clio_server uses: actions/upload-artifact@v3 with: name: clio_server_${{ runner.os }}_${{ matrix.build_type }} path: build/clio_server - name: Upload clio_tests if: ${{ !matrix.code_coverage }} uses: actions/upload-artifact@v3 with: name: clio_tests_${{ runner.os }} path: build/clio_tests - name: Save cache uses: ./.github/actions/save_cache with: conan_dir: ${{ env.CONAN_USER_HOME }}/.conan conan_hash: ${{ steps.restore_cache.outputs.conan_hash }} conan_cache_hit: ${{ steps.restore_cache.outputs.conan_cache_hit }} ccache_dir: ${{ env.CCACHE_DIR }} ccache_cache_hit: ${{ steps.restore_cache.outputs.ccache_cache_hit }} ccache_cache_miss_rate: ${{ steps.ccache_stats.outputs.miss_rate }} build_type: ${{ matrix.build_type }} code_coverage: ${{ matrix.code_coverage }} # TODO: This is not a part of build process but it is the easiest way to do it here. # It will be refactored in https://github.com/XRPLF/clio/issues/1075 - name: Run code coverage if: ${{ matrix.code_coverage }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} uses: ./.github/actions/code_coverage test: name: Run Tests needs: build strategy: fail-fast: false matrix: include: - os: heavy container: image: rippleci/clio_ci:latest - os: macOS runs-on: [self-hosted, "${{ matrix.os }}"] container: ${{ matrix.container }} steps: - uses: actions/download-artifact@v3 with: name: clio_tests_${{ runner.os }} - name: Run clio_tests run: | chmod +x ./clio_tests ./clio_tests --gtest_filter="-BackendCassandraBaseTest*:BackendCassandraTest*:BackendCassandraFactoryTestWithDB*"