Merge pull request #14 from XRPLF/develop #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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*" |