From 2d5553f002504b3994c46a7598cdafe037a09180 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 09:15:43 +0700 Subject: [PATCH 1/6] feat: dont redo CI --- .../package-filters/rs-packages-direct.yml | 44 +++++++++++++++++++ .github/workflows/tests-rs-package.yml | 14 +++--- .github/workflows/tests.yml | 7 +++ 3 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 .github/package-filters/rs-packages-direct.yml diff --git a/.github/package-filters/rs-packages-direct.yml b/.github/package-filters/rs-packages-direct.yml new file mode 100644 index 0000000000..0d2d079b40 --- /dev/null +++ b/.github/package-filters/rs-packages-direct.yml @@ -0,0 +1,44 @@ +wallet-utils-contract: + - packages/wallet-utils-contract/** + +token-history-contract: + - packages/token-history-contract/** + +dashpay-contract: + - packages/dashpay-contract/** + +masternode-reward-shares-contract: + - packages/masternode-reward-shares-contract/** + +withdrawals-contract: + - packages/withdrawals-contract/** + +dpns-contract: + - packages/dpns-contract/** + +json-schema-compatibility-validator: + - packages/rs-json-schema-compatibility-validator/** + +dpp: + - packages/rs-dpp/** + +wasm-dpp: + - packages/wasm-dpp/** + +drive: + - packages/rs-drive/** + +drive-abci: + - packages/rs-drive-abci/** + +dapi-grpc: + - packages/dapi-grpc/** + +rs-dapi-client: + - packages/rs-dapi-client/** + +dash-sdk: + - packages/rs-sdk/** + +rs-sdk-ffi: + - packages/rs-sdk-ffi/** diff --git a/.github/workflows/tests-rs-package.yml b/.github/workflows/tests-rs-package.yml index b52e2bd8bf..d644f2a40a 100644 --- a/.github/workflows/tests-rs-package.yml +++ b/.github/workflows/tests-rs-package.yml @@ -9,11 +9,16 @@ on: description: If true, try to build each individual feature for this crate type: boolean default: false + direct-packages: + description: JSON array of packages that changed directly (not via deps) + type: string + default: '[]' jobs: lint: name: Linting runs-on: ubuntu-24.04 + if: contains(fromJSON(inputs.direct-packages), inputs.package) permissions: id-token: write contents: read @@ -51,6 +56,7 @@ jobs: formatting: name: Formatting runs-on: ubuntu-24.04 + if: contains(fromJSON(inputs.direct-packages), inputs.package) timeout-minutes: 5 steps: - name: Check out repo @@ -71,6 +77,7 @@ jobs: unused_deps: name: Unused dependencies runs-on: ubuntu-24.04 + if: contains(fromJSON(inputs.direct-packages), inputs.package) permissions: id-token: write contents: read @@ -113,10 +120,7 @@ jobs: name: Detect immutable structure changes timeout-minutes: 10 runs-on: ubuntu-24.04 - # FIXME: as we use `gh pr view` below, this check can only - # run on pull requests. We should find a way to run it - # when manual triggers are used. - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request' && contains(fromJSON(inputs.direct-packages), inputs.package) steps: - name: Checkout base commit uses: actions/checkout@v4 @@ -207,7 +211,7 @@ jobs: name: Check each feature runs-on: ubuntu-24.04 timeout-minutes: 15 - if: ${{ inputs.check-each-feature }} + if: ${{ inputs.check-each-feature && contains(fromJSON(inputs.direct-packages), inputs.package) }} steps: - name: Check out repo uses: actions/checkout@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0c14f5a8db..938a766361 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -26,6 +26,7 @@ jobs: outputs: js-packages: ${{ steps.filter-js.outputs.changes }} rs-packages: ${{ steps.filter-rs.outputs.changes }} + rs-packages-direct: ${{ steps.filter-rs-direct.outputs.changes }} steps: - name: Checkout uses: actions/checkout@v4 @@ -42,6 +43,11 @@ jobs: with: filters: .github/package-filters/rs-packages.yml + - uses: dorny/paths-filter@v2 + id: filter-rs-direct + with: + filters: .github/package-filters/rs-packages-direct.yml + build-js: name: Build JS packages if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || !github.event.pull_request.draft }} @@ -84,6 +90,7 @@ jobs: with: package: ${{ matrix.rs-package }} check-each-feature: ${{ contains(fromJSON('["dash-sdk","rs-dapi-client","dapi-grpc","dpp","drive-abci"]'), matrix.rs-package) }} + direct-packages: ${{ needs.changes.outputs.rs-packages-direct }} rs-crates-security: name: Rust crates security audit From 6e0973e926084bc1dc3384c8709419d90e0e93e6 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 09:29:44 +0700 Subject: [PATCH 2/6] feat: dont redo CI --- .../package-filters/js-packages-direct.yml | 47 +++++++++++++++++++ .github/workflows/tests-js-package.yml | 5 ++ .github/workflows/tests.yml | 7 +++ 3 files changed, 59 insertions(+) create mode 100644 .github/package-filters/js-packages-direct.yml diff --git a/.github/package-filters/js-packages-direct.yml b/.github/package-filters/js-packages-direct.yml new file mode 100644 index 0000000000..c4efc00274 --- /dev/null +++ b/.github/package-filters/js-packages-direct.yml @@ -0,0 +1,47 @@ +'@dashevo/wallet-utils-contract': + - packages/wallet-utils-contract/** + +'@dashevo/token-history-contract': + - packages/token-history-contract/** + +'@dashevo/dashpay-contract': + - packages/dashpay-contract/** + +'@dashevo/masternode-reward-shares-contract': + - packages/masternode-reward-shares-contract/** + +'@dashevo/withdrawals-contract': + - packages/withdrawals-contract/** + +'@dashevo/dpns-contract': + - packages/dpns-contract/** + +'@dashevo/grpc-common': + - packages/js-grpc-common/** + +'@dashevo/wasm-dpp': + - packages/wasm-dpp/** + +'@dashevo/dapi-grpc': + - packages/dapi-grpc/** + +'@dashevo/dash-spv': + - packages/dash-spv/** + +'@dashevo/dapi': + - packages/dapi/** + +'@dashevo/dapi-client': + - packages/js-dapi-client/** + +'@dashevo/wallet-lib': + - packages/wallet-lib/** + +dash: + - packages/js-dash-sdk/** + +dashmate: + - packages/dashmate/** + +'@dashevo/platform-test-suite': + - packages/platform-test-suite/** diff --git a/.github/workflows/tests-js-package.yml b/.github/workflows/tests-js-package.yml index a2bf39a47b..c3152957b8 100644 --- a/.github/workflows/tests-js-package.yml +++ b/.github/workflows/tests-js-package.yml @@ -5,6 +5,10 @@ on: description: The package name to run tests for type: string required: true + direct-packages: + description: JSON array of JS packages that changed directly + type: string + default: '[]' skip-tests: description: Skip running tests type: boolean @@ -19,6 +23,7 @@ jobs: name: Linting runs-on: ubuntu-24.04 timeout-minutes: 5 + if: contains(fromJSON(inputs.direct-packages), inputs.package) permissions: id-token: write contents: read diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 938a766361..d3b3618391 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -25,6 +25,7 @@ jobs: runs-on: ubuntu-24.04 outputs: js-packages: ${{ steps.filter-js.outputs.changes }} + js-packages-direct: ${{ steps.filter-js-direct.outputs.changes }} rs-packages: ${{ steps.filter-rs.outputs.changes }} rs-packages-direct: ${{ steps.filter-rs-direct.outputs.changes }} steps: @@ -38,6 +39,11 @@ jobs: with: filters: .github/package-filters/js-packages.yml + - uses: dorny/paths-filter@v2 + id: filter-js-direct + with: + filters: .github/package-filters/js-packages-direct.yml + - uses: dorny/paths-filter@v2 id: filter-rs with: @@ -129,6 +135,7 @@ jobs: package: ${{ matrix.js-package }} test-command: ${{ matrix.js-package == 'dashmate' && 'test:unit' || 'test' }} skip-tests: ${{ contains(matrix.js-package, 'platform-test-suite') }} + direct-packages: ${{ needs.changes.outputs.js-packages-direct }} js-deps-versions: name: JS dependency versions check From ad594c62e55e52d007f12070ab57049c992dafc1 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 09:38:40 +0700 Subject: [PATCH 3/6] fix --- .../js-packages-no-workflows.yml | 79 +++++++++++++++++++ .../rs-packages-no-workflows.yml | 70 ++++++++++++++++ .github/workflows/tests.yml | 4 +- 3 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 .github/package-filters/js-packages-no-workflows.yml create mode 100644 .github/package-filters/rs-packages-no-workflows.yml diff --git a/.github/package-filters/js-packages-no-workflows.yml b/.github/package-filters/js-packages-no-workflows.yml new file mode 100644 index 0000000000..bb0ca7da81 --- /dev/null +++ b/.github/package-filters/js-packages-no-workflows.yml @@ -0,0 +1,79 @@ +'@dashevo/wallet-utils-contract': &wallet-utils-contract + - packages/wallet-utils-contract/** + +'@dashevo/token-history-contract': &token-history-contract + - packages/token-history-contract/** + +'@dashevo/dashpay-contract': &dashpay-contract + - packages/dashpay-contract/** + +'@dashevo/masternode-reward-shares-contract': &masternode-reward-shares-contract + - packages/masternode-reward-shares-contract/** + +'@dashevo/withdrawals-contract': &withdrawals-contract + - packages/withdrawals-contract/** + +'@dashevo/dpns-contract': &dpns-contract + - packages/dpns-contract/** + +'@dashevo/grpc-common': &grpc-common + - packages/js-grpc-common/** + +'@dashevo/wasm-dpp': &wasm-dpp + - packages/wasm-dpp/** + - *dashpay-contract + - *masternode-reward-shares-contract + - *dpns-contract + - *withdrawals-contract + - *wallet-utils-contract + - *token-history-contract + - packages/rs-platform-serialization/** + - packages/rs-platform-serialization-derive/** + - packages/rs-platform-value/** + - packages/rs-platform-value-convertible/** + - packages/rs-platform-version/** + - packages/rs-platform-versioning/** + - packages/rs-dpp/** + +'@dashevo/dapi-grpc': &dapi-grpc + - packages/dapi-grpc/** + - *grpc-common + +'@dashevo/dash-spv': &dash-spv + - packages/dash-spv/** + +'@dashevo/dapi': + - packages/dapi/** + - *wasm-dpp + - *dapi-grpc + - *dash-spv + +'@dashevo/dapi-client': &dapi-client + - packages/js-dapi-client/** + - *dapi-grpc + - *dash-spv + - *wasm-dpp + +'@dashevo/wallet-lib': &wallet-lib + - packages/wallet-lib/** + - *dapi-client + - *wasm-dpp + +dash: &dash + - packages/js-dash-sdk/** + - *dapi-client + - *wallet-lib + +dashmate: + - packages/dashmate/** + - *dashpay-contract + - *masternode-reward-shares-contract + - *dpns-contract + - *withdrawals-contract + - *token-history-contract + - *wallet-lib + - *dapi-client + +'@dashevo/platform-test-suite': + - packages/platform-test-suite/** + - *dash diff --git a/.github/package-filters/rs-packages-no-workflows.yml b/.github/package-filters/rs-packages-no-workflows.yml new file mode 100644 index 0000000000..54417389b1 --- /dev/null +++ b/.github/package-filters/rs-packages-no-workflows.yml @@ -0,0 +1,70 @@ +wallet-utils-contract: &wallet-utils-contract + - packages/wallet-utils-contract/** + +token-history-contract: &token-history-contract + - packages/token-history-contract/** + +dashpay-contract: &dashpay-contract + - packages/dashpay-contract/** + +masternode-reward-shares-contract: &masternode-reward-shares-contract + - packages/masternode-reward-shares-contract/** + +withdrawals-contract: &withdrawals-contract + - packages/withdrawals-contract/** + +dpns-contract: &dpns-contract + - packages/dpns-contract/** + +json-schema-compatibility-validator: &json-schema-compatibility-validator + - packages/rs-json-schema-compatibility-validator/** + +dpp: &dpp + - packages/rs-dpp/** + - *dashpay-contract + - *masternode-reward-shares-contract + - *dpns-contract + - *withdrawals-contract + - *wallet-utils-contract + - *token-history-contract + - *json-schema-compatibility-validator + - packages/rs-platform-serialization/** + - packages/rs-platform-serialization-derive/** + - packages/rs-platform-value/** + - packages/rs-platform-value-convertible/** + - packages/rs-platform-version/** + - packages/rs-platform-versioning/** + +wasm-dpp: + - packages/wasm-dpp/** + - *dpp + +drive: &drive + - packages/rs-drive/** + - *dpp + +drive-abci: + - packages/rs-drive-abci/** + - *drive + +dapi-grpc: &dapi_grpc + - packages/rs-platform-version/** + - packages/rs-dapi-grpc-macros/** + - packages/dapi-grpc/** + +rs-dapi-client: &dapi_client + - packages/rs-dapi-client/** + - *dapi_grpc + +dash-sdk: + - packages/rs-drive-proof-verifier/** + - packages/rs-sdk/** + - *dapi_client + - *drive + +rs-sdk-ffi: + - packages/rs-sdk-ffi/** + - packages/rs-sdk/** + - packages/rs-drive-proof-verifier/** + - *dapi_client + - *drive diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d3b3618391..20708715fa 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -37,7 +37,7 @@ jobs: - uses: dorny/paths-filter@v2 id: filter-js with: - filters: .github/package-filters/js-packages.yml + filters: .github/package-filters/js-packages-no-workflows.yml - uses: dorny/paths-filter@v2 id: filter-js-direct @@ -47,7 +47,7 @@ jobs: - uses: dorny/paths-filter@v2 id: filter-rs with: - filters: .github/package-filters/rs-packages.yml + filters: .github/package-filters/rs-packages-no-workflows.yml - uses: dorny/paths-filter@v2 id: filter-rs-direct From 7087804095c433ae7825c51ea868fee0789a6857 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 09:41:11 +0700 Subject: [PATCH 4/6] fix --- .github/workflows/tests.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 20708715fa..961d37a84f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,22 +34,22 @@ jobs: with: fetch-depth: 0 - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 id: filter-js with: filters: .github/package-filters/js-packages-no-workflows.yml - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 id: filter-js-direct with: filters: .github/package-filters/js-packages-direct.yml - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 id: filter-rs with: filters: .github/package-filters/rs-packages-no-workflows.yml - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 id: filter-rs-direct with: filters: .github/package-filters/rs-packages-direct.yml From 195d64e8045b4a3c5575dbfea64f1e306eea9c70 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 09:56:01 +0700 Subject: [PATCH 5/6] test suite triggers --- .../package-filters/test-suite-triggers.yml | 32 +++++++++++++++++++ .github/workflows/tests.yml | 11 +++++++ 2 files changed, 43 insertions(+) create mode 100644 .github/package-filters/test-suite-triggers.yml diff --git a/.github/package-filters/test-suite-triggers.yml b/.github/package-filters/test-suite-triggers.yml new file mode 100644 index 0000000000..2ee579da98 --- /dev/null +++ b/.github/package-filters/test-suite-triggers.yml @@ -0,0 +1,32 @@ +run: + - packages/platform-test-suite/** + - packages/dashmate/** + - packages/dapi/** + - packages/js-dash-sdk/** + - packages/js-dapi-client/** + - packages/wasm-dpp/** + - packages/dapi-grpc/** + - packages/js-grpc-common/** + - packages/dash-spv/** + - packages/wallet-lib/** + # Rust core components that affect local network behavior + - packages/rs-dpp/** + - packages/rs-drive/** + - packages/rs-drive-abci/** + - packages/rs-dapi-client/** + - packages/rs-platform-serialization/** + - packages/rs-platform-serialization-derive/** + - packages/rs-platform-value/** + - packages/rs-platform-value-convertible/** + - packages/rs-platform-version/** + - packages/rs-platform-versioning/** + # System contracts used by validations + - packages/dashpay-contract/** + - packages/masternode-reward-shares-contract/** + - packages/dpns-contract/** + - packages/withdrawals-contract/** + - packages/token-history-contract/** + - packages/wallet-utils-contract/** + # Local network scripts and action + - .github/actions/local-network/** + - scripts/** diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 961d37a84f..353cc0b7ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,6 +28,7 @@ jobs: js-packages-direct: ${{ steps.filter-js-direct.outputs.changes }} rs-packages: ${{ steps.filter-rs.outputs.changes }} rs-packages-direct: ${{ steps.filter-rs-direct.outputs.changes }} + test-suite: ${{ steps.filter-test-suite.outputs.run }} steps: - name: Checkout uses: actions/checkout@v4 @@ -54,6 +55,12 @@ jobs: with: filters: .github/package-filters/rs-packages-direct.yml + - name: Check if Test Suite should run + id: filter-test-suite + uses: dorny/paths-filter@v3 + with: + filters: .github/package-filters/test-suite-triggers.yml + build-js: name: Build JS packages if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || !github.event.pull_request.draft }} @@ -208,7 +215,9 @@ jobs: needs: - build-js - build-images + - changes secrets: inherit + if: needs.changes.outputs.test-suite == 'true' strategy: fail-fast: false matrix: @@ -237,5 +246,7 @@ jobs: needs: - build-js - build-images + - changes secrets: inherit + if: needs.changes.outputs.test-suite == 'true' uses: ./.github/workflows/tests-packges-functional.yml From 28ba5517274ea9a7756fa9a9ca995b4fc35b115a Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 12 Sep 2025 10:07:02 +0700 Subject: [PATCH 6/6] test suite triggers --- .github/workflows/pr.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7c13a960dc..a72b531e1f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -32,6 +32,7 @@ jobs: # Configure which scopes are allowed (newline-delimited). # These are regex patterns auto-wrapped in `^ $`. scopes: | + ci dapi platform drive @@ -39,14 +40,15 @@ jobs: dpp dashmate contract - sdk + rs-sdk + rs-sdk-ffi + swift-sdk strategy-tests simple-signer wallet-lib test-suite bench-suite release - dash-spv wasm-sdk requireScope: false # Configure additional validation for the subject based on a regex.