# This workflow runs all workflows to build and test the code on various Linux # flavors, as well as on MacOS and Windows, on a scheduled basis, on merge into # the 'develop' or 'release*' branches, or when requested manually. Upon pushes # to the develop branch it also uploads the libxrpl recipe to the Conan remote. name: Trigger on: push: branches: - "develop" - "release*" paths: # These paths are unique to `on-trigger.yml`. - ".github/workflows/on-trigger.yml" # Keep the paths below in sync with those in `on-pr.yml`. - ".github/actions/build-deps/**" - ".github/actions/build-test/**" - ".github/actions/generate-version/**" - ".github/actions/setup-conan/**" - ".github/scripts/strategy-matrix/**" - ".github/workflows/reusable-build.yml" - ".github/workflows/reusable-build-test-config.yml" - ".github/workflows/reusable-build-test.yml" - ".github/workflows/reusable-strategy-matrix.yml" - ".github/workflows/reusable-test.yml" - ".github/workflows/reusable-upload-recipe.yml" - ".codecov.yml" - "cmake/**" - "conan/**" - "external/**" - "include/**" - "src/**" - "tests/**" - "CMakeLists.txt" - "conanfile.py" - "conan.lock" # Run at 06:32 UTC on every day of the week from Monday through Friday. This # will force all dependencies to be rebuilt, which is useful to verify that # all dependencies can be built successfully. Only the dependencies that # are actually missing from the remote will be uploaded. schedule: - cron: "32 6 * * 1-5" # Run when manually triggered via the GitHub UI or API. workflow_dispatch: concurrency: # When a PR is merged into the develop branch it will be assigned a unique # group identifier, so execution will continue even if another PR is merged # while it is still running. In all other cases the group identifier is shared # per branch, so that any in-progress runs are cancelled when a new commit is # pushed. group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' && github.sha || github.ref }} cancel-in-progress: true defaults: run: shell: bash jobs: build-test: uses: ./.github/workflows/reusable-build-test.yml strategy: fail-fast: ${{ github.event_name == 'merge_group' }} matrix: os: [linux, macos, windows] with: # Enable ccache only for events targeting the XRPLF repository, since # other accounts will not have access to our remote cache storage. # However, we do not enable ccache for events targeting a release branch, # to protect against the rare case that the output produced by ccache is # not identical to a regular compilation. ccache_enabled: ${{ github.repository_owner == 'XRPLF' && !startsWith(github.ref, 'refs/heads/release') }} os: ${{ matrix.os }} strategy_matrix: ${{ github.event_name == 'schedule' && 'all' || 'minimal' }} secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} upload-recipe: needs: build-test # Only run when pushing to the develop branch in the XRPLF repository. if: ${{ github.repository_owner == 'XRPLF' && github.event_name == 'push' && github.ref == 'refs/heads/develop' }} uses: ./.github/workflows/reusable-upload-recipe.yml secrets: remote_username: ${{ secrets.CONAN_REMOTE_USERNAME }} remote_password: ${{ secrets.CONAN_REMOTE_PASSWORD }}