feat: Graceful shutdown #4232
Workflow file for this run
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: | |
check_format: | |
name: Check format | |
runs-on: ubuntu-20.04 | |
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-20.04 | |
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 | |
container: | |
image: rippleci/clio_ci:latest | |
build_type: Release | |
conan_profile: gcc | |
code_coverage: false | |
static: true | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
build_type: Debug | |
conan_profile: gcc | |
code_coverage: true | |
static: true | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
build_type: Release | |
conan_profile: clang | |
code_coverage: false | |
static: true | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
build_type: Debug | |
conan_profile: clang | |
code_coverage: false | |
static: true | |
- os: macos14 | |
build_type: Release | |
code_coverage: false | |
static: false | |
runs-on: [self-hosted, "${{ matrix.os }}"] | |
container: ${{ matrix.container }} | |
steps: | |
- name: Clean workdir | |
if: ${{ runner.os == 'macOS' }} | |
uses: kuznetsss/workspace-cleanup@1.0 | |
- 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 | |
with: | |
conan_profile: ${{ matrix.conan_profile }} | |
- name: Restore cache | |
uses: ./.github/actions/restore_cache | |
id: restore_cache | |
with: | |
conan_dir: ${{ env.CONAN_USER_HOME }}/.conan | |
conan_profile: ${{ steps.conan.outputs.conan_profile }} | |
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 }} | |
static: ${{ matrix.static }} | |
- 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 && strip build/clio_integration_tests | |
- name: Upload clio_server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clio_server_${{ runner.os }}_${{ matrix.build_type }}_${{ steps.conan.outputs.conan_profile }} | |
path: build/clio_server | |
- name: Upload clio_tests | |
if: ${{ !matrix.code_coverage }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clio_tests_${{ runner.os }}_${{ matrix.build_type }}_${{ steps.conan.outputs.conan_profile }} | |
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 }} | |
conan_profile: ${{ steps.conan.outputs.conan_profile }} | |
# 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 }} | |
uses: ./.github/actions/code_coverage | |
upload_coverage_report: | |
name: Codecov | |
needs: build | |
uses: ./.github/workflows/upload_coverage_report.yml | |
secrets: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
test: | |
name: Run Tests | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
conan_profile: gcc | |
build_type: Release | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
conan_profile: clang | |
build_type: Release | |
- os: heavy | |
container: | |
image: rippleci/clio_ci:latest | |
conan_profile: clang | |
build_type: Debug | |
- os: macos14 | |
conan_profile: apple_clang_15 | |
build_type: Release | |
runs-on: [self-hosted, "${{ matrix.os }}"] | |
container: ${{ matrix.container }} | |
steps: | |
- name: Clean workdir | |
if: ${{ runner.os == 'macOS' }} | |
uses: kuznetsss/workspace-cleanup@1.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 |