mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
This change adds support for the merge_group CI event, which will allow us to enable merge queues.
133 lines
4.4 KiB
YAML
133 lines
4.4 KiB
YAML
# This workflow runs all workflows to check, build and test the project on
|
|
# various Linux flavors, as well as on MacOS and Windows, on every push to a
|
|
# user branch. However, it will not run if the pull request is a draft unless it
|
|
# has the 'DraftRunCI' label.
|
|
name: PR
|
|
|
|
on:
|
|
merge_group:
|
|
types:
|
|
- checks_requested
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- synchronize
|
|
- ready_for_review
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
env:
|
|
CONAN_REMOTE_NAME: xrplf
|
|
CONAN_REMOTE_URL: https://conan.ripplex.io
|
|
|
|
jobs:
|
|
# This job determines whether the workflow should run. It runs when the PR is
|
|
# not a draft or has the 'DraftRunCI' label.
|
|
should-run:
|
|
if: ${{ !github.event.pull_request.draft || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: No-op
|
|
run: true
|
|
|
|
# This job checks whether any files have changed that should cause the next
|
|
# jobs to run. We do it this way rather than using `paths` in the `on:`
|
|
# section, because all required checks must pass, even for changes that do not
|
|
# modify anything that affects those checks. We would therefore like to make
|
|
# the checks required only if the job runs, but GitHub does not support that
|
|
# directly. By always executing the workflow on new commits and by using the
|
|
# changed-files action below, we ensure that Github considers any skipped jobs
|
|
# to have passed, and in turn the required checks as well.
|
|
any-changed:
|
|
needs: should-run
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
- name: Determine changed files
|
|
id: changes
|
|
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
|
|
with:
|
|
files: |
|
|
# These paths are unique to `on-pr.yml`.
|
|
.github/scripts/levelization/**
|
|
.github/workflows/check-format.yml
|
|
.github/workflows/check-levelization.yml
|
|
.github/workflows/notify-clio.yml
|
|
.github/workflows/on-pr.yml
|
|
.clang-format
|
|
.pre-commit-config.yaml
|
|
|
|
# Keep the paths below in sync with those in `on-trigger.yml`.
|
|
.github/actions/build-deps/**
|
|
.github/actions/build-test/**
|
|
.github/scripts/strategy-matrix/**
|
|
.github/workflows/build-test.yml
|
|
.codecov.yml
|
|
cmake/**
|
|
conan/**
|
|
external/**
|
|
include/**
|
|
src/**
|
|
tests/**
|
|
CMakeLists.txt
|
|
conanfile.py
|
|
outputs:
|
|
changed: ${{ steps.changes.outputs.any_changed }}
|
|
|
|
check-format:
|
|
needs: any-changed
|
|
if: needs.any-changed.outputs.changed == 'true'
|
|
uses: ./.github/workflows/check-format.yml
|
|
|
|
check-levelization:
|
|
needs: any-changed
|
|
if: needs.any-changed.outputs.changed == 'true'
|
|
uses: ./.github/workflows/check-levelization.yml
|
|
|
|
# This job works around the limitation that GitHub Actions does not support
|
|
# using environment variables as inputs for reusable workflows.
|
|
generate-outputs:
|
|
needs: any-changed
|
|
if: needs.any-changed.outputs.changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: No-op
|
|
run: true
|
|
outputs:
|
|
conan_remote_name: ${{ env.CONAN_REMOTE_NAME }}
|
|
conan_remote_url: ${{ env.CONAN_REMOTE_URL }}
|
|
|
|
build-test:
|
|
needs: generate-outputs
|
|
uses: ./.github/workflows/build-test.yml
|
|
strategy:
|
|
matrix:
|
|
os: [linux, macos, windows]
|
|
with:
|
|
conan_remote_name: ${{ needs.generate-outputs.outputs.conan_remote_name }}
|
|
conan_remote_url: ${{ needs.generate-outputs.outputs.conan_remote_url }}
|
|
os: ${{ matrix.os }}
|
|
secrets:
|
|
codecov_token: ${{ secrets.CODECOV_TOKEN }}
|
|
|
|
notify-clio:
|
|
needs:
|
|
- generate-outputs
|
|
- build-test
|
|
uses: ./.github/workflows/notify-clio.yml
|
|
with:
|
|
conan_remote_name: ${{ needs.generate-outputs.outputs.conan_remote_name }}
|
|
conan_remote_url: ${{ needs.generate-outputs.outputs.conan_remote_url }}
|
|
secrets:
|
|
clio_notify_token: ${{ secrets.CLIO_NOTIFY_TOKEN }}
|
|
conan_remote_username: ${{ secrets.CONAN_REMOTE_USERNAME }}
|
|
conan_remote_password: ${{ secrets.CONAN_REMOTE_PASSWORD }}
|