name: windows on: pull_request: types: [opened, reopened, synchronize, ready_for_review] push: # If the branches list is ever changed, be sure to change it on all # build/test jobs (nix, macos, windows, instrumentation) branches: # Always build the package branches - develop - release - master # Branches that opt-in to running - "ci/**" # https://docs.github.com/en/actions/using-jobs/using-concurrency concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CONAN_REMOTE_URL: https://conan.ripplex.io CONAN_REMOTE_USERNAME: ${{ secrets.CONAN_REMOTE_USERNAME }} CONAN_REMOTE_PASSWORD: ${{ secrets.CONAN_REMOTE_PASSWORD }} # This part of the Conan configuration is specific to this workflow only; we # do not want to pollute the 'conan/profiles' directory with settings that # might not work for other workflows. CONAN_GLOBAL_CONF: | core.download:parallel={{os.cpu_count()}} core.upload:parallel={{os.cpu_count()}} tools.build:jobs=24 tools.build:verbosity=verbose tools.compilation:verbosity=verbose jobs: test: if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }} strategy: fail-fast: false matrix: version: - generator: Visual Studio 17 2022 runs-on: windows-2022 configuration: - type: Release tests: true - type: Debug # Skip running unit tests on debug builds, because they # take an unreasonable amount of time tests: false runtime: d runs-on: ${{ matrix.version.runs-on }} env: build_dir: .build steps: - name: checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: choose Python uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 with: python-version: 3.13 - name: learn Python cache directory id: pip-cache shell: bash run: | python -m pip install --upgrade pip echo "dir=$(pip cache dir)" | tee ${GITHUB_OUTPUT} - name: restore Python cache directory uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-${{ hashFiles('.github/workflows/windows.yml') }} - name: install Conan run: pip install wheel conan - name: check environment run: | dir env: $env:PATH -split ';' python --version conan --version cmake --version - name: configure Conan shell: bash run: | echo "${CONAN_GLOBAL_CONF}" > $(conan config home)/global.conf conan config install conan/profiles/ -tf $(conan config home)/profiles/ conan profile show - name: build dependencies uses: ./.github/actions/dependencies with: configuration: ${{ matrix.configuration.type }} - name: build uses: ./.github/actions/build with: generator: "${{ matrix.version.generator }}" configuration: ${{ matrix.configuration.type }} # Hard code for now. Move to the matrix if varied options are needed cmake-args: "-Dassert=TRUE -Dwerr=TRUE -Dreporting=OFF -Dunity=ON" cmake-target: install - name: test shell: bash if: ${{ matrix.configuration.tests }} run: | cd ${build_dir}/${{ matrix.configuration.type }} ./rippled --unittest --unittest-jobs $(nproc) ctest -j $(nproc) --output-on-failure