From 3d9d2f31e9c33cbb2f23bf1b1a5f44d96ae833d3 Mon Sep 17 00:00:00 2001 From: Daniel Gak Anagrov Date: Wed, 24 Sep 2025 18:13:38 +0200 Subject: [PATCH] feat(ci): skip ci test jobs when no relevant changes (#5545) * feat(ci): skip server on no changes? * feat(ci): skip server on no changes * feat(ci): disable skipping * test * feat: add package dependencies for ci skipping * fix * test server change * test * fix: outputs * test * another test for shared * fix: frontend trigger * feat: undo change and sha ref --- .github/workflows/release.yml | 1 + .github/workflows/tests.yml | 68 +++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83533037e..7885fdd2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,6 +26,7 @@ jobs: IMAGE_VERSION_TAG: ${{ needs.get-version.outputs.IMAGE_VERSION_TAG }} DOCKERHUB_USERNAME: 'speckledevops' CONTINUE_ON_ERROR: ${{ startsWith(github.ref, 'refs/heads/testing') }} # allows releasing on testing even if test fail + DISABLE_SKIPPING: ${{ startsWith(github.ref, 'refs/heads/main') }} # disable test skip on main secrets: inherit builds: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ec80f09c2..2d4bc3513 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,6 +13,10 @@ on: required: false default: false type: boolean + DISABLE_SKIPPING: + required: false + default: false + type: boolean secrets: LICENSE_TOKEN: required: true @@ -30,6 +34,52 @@ on: required: true jobs: + changes: + name: Get modified files + runs-on: blacksmith + outputs: + server: ${{ steps.changes.outputs.server }} + frontend-2: ${{ steps.changes.outputs.frontend-2 }} + preview-service: ${{ steps.changes.outputs.preview-service }} + viewer: ${{ steps.changes.outputs.viewer }} + ui-components: ${{ steps.changes.outputs.ui-components }} + objectsender: ${{ steps.changes.outputs.objectsender }} + shared: ${{ steps.changes.outputs.shared }} + steps: + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 + id: changes + with: + filters: | + server: + - 'packages/server/**' + - 'packages/shared/**' + - 'packages/objectloader2/**' + frontend-2: + - 'packages/frontend-2/**' + - 'packages/shared/**' + - 'packages/tailwind-theme/**' + - 'packages/ui-components/**' + - 'packages/ui-components-nuxt/**' + - 'packages/viewer/**' + - 'packages/objectloader2/**' + preview-service: + - 'packages/preview-service/**' + - 'packages/objectloader2/**' + - 'packages/preview-frontend/**' + - 'packages/shared/**' + - 'packages/viewer/**' + viewer: + - 'packages/viewer/**' + - 'packages/shared/**' + ui-components: + - 'packages/ui-components/**' + - 'packages/shared/**' + objectsender: + - 'packages/objectsender/**' + - 'packages/shared/**' + shared: + - 'packages/shared/**' + lint-and-prettier: name: Lint and prettier runs-on: blacksmith-4vcpu-ubuntu-2404 @@ -75,6 +125,8 @@ jobs: test-frontend-2: name: Frontend runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.frontend-2 == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} steps: - uses: actions/checkout@v4.2.2 @@ -93,6 +145,8 @@ jobs: test-viewer: name: Viewer runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.viewer == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} steps: - uses: actions/checkout@v4.2.2 @@ -120,6 +174,8 @@ jobs: test-shared: name: Shared runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.shared == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} steps: - uses: actions/checkout@v4.2.2 @@ -157,6 +213,8 @@ jobs: test-objectsender: name: Object Sender runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.objectsender == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} steps: - uses: actions/checkout@v4.2.2 @@ -181,6 +239,8 @@ jobs: test-ui-components: name: UI Components runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.ui-components == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} steps: - uses: actions/checkout@v4.2.2 @@ -208,6 +268,8 @@ jobs: test-preview-service: name: Preview service runs-on: blacksmith-4vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.preview-service == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} container: image: ghcr.io/specklesystems/speckle-ubuntu-chromium:latest @@ -257,6 +319,8 @@ jobs: test-server: name: Server runs-on: blacksmith-8vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.server == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} services: redis: @@ -352,6 +416,8 @@ jobs: test-server-no-ff: name: Server no ff runs-on: blacksmith-8vcpu-ubuntu-2404 + needs: changes + if: ${{ needs.changes.outputs.server == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} services: redis: @@ -436,6 +502,8 @@ jobs: test-server-multiregion: name: Server multiregion + needs: changes + if: ${{ needs.changes.outputs.server == 'true' || inputs.DISABLE_SKIPPING }} continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }} runs-on: blacksmith-4vcpu-ubuntu-2404 services: