feat(ci): skip builds on pr when no files modified (#5637)

* feat: skip builds on pr
* feat: skipping utils too
This commit is contained in:
Daniel Gak Anagrov
2025-10-06 13:23:51 +02:00
committed by GitHub
parent 3ca4a11ca3
commit db8f5754a6
4 changed files with 160 additions and 72 deletions
+41
View File
@@ -23,6 +23,38 @@ on:
required: false
type: boolean
default: false
SKIP_SERVER:
required: false
default: false
type: boolean
SKIP_FRONTEND_2:
required: false
default: false
type: boolean
SKIP_PREVIEW_SERVICE:
required: false
default: false
type: boolean
SKIP_WEBHOOK_SERVICE:
required: false
default: false
type: boolean
SKIP_FILEIMPORT_SERVICE:
required: false
default: false
type: boolean
SKIP_IFC_IMPORT_SERVICE:
required: false
default: false
type: boolean
SKIP_MONITOR_DEPLOYMENT:
required: false
default: false
type: boolean
SKIP_UTILS:
required: false
default: false
type: boolean
secrets:
DATADOG_API_KEY:
required: true
@@ -33,6 +65,7 @@ jobs:
docker-build-server:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: Server
if: ${{ inputs.SKIP_SERVER == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -63,6 +96,7 @@ jobs:
docker-build-frontend2:
runs-on: blacksmith-8vcpu-ubuntu-2404
name: Frontend2
if: ${{ inputs.SKIP_FRONTEND_2 == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -92,6 +126,7 @@ jobs:
docker-build-preview-service:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: Preview service
if: ${{ inputs.SKIP_PREVIEW_SERVICE == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -111,6 +146,7 @@ jobs:
docker-build-webhook-service:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: Webhook service
if: ${{ inputs.SKIP_WEBHOOK_SERVICE == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -130,6 +166,7 @@ jobs:
docker-build-fileimport-service:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: File import service
if: ${{ inputs.SKIP_FILEIMPORT_SERVICE == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -149,6 +186,7 @@ jobs:
docker-build-ifc-import-service:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: IFC import service
if: ${{ inputs.SKIP_IFC_IMPORT_SERVICE == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -168,6 +206,7 @@ jobs:
docker-build-test-deploy:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: Test deploy util
if: ${{ inputs.SKIP_UTILS == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -187,6 +226,7 @@ jobs:
docker-build-monitor-deployment:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: monitor container
if: ${{ inputs.SKIP_MONITOR_DEPLOYMENT == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
@@ -206,6 +246,7 @@ jobs:
docker-build-docker-compose-ingress:
runs-on: blacksmith-4vcpu-ubuntu-2404
name: Docker compose ingress
if: ${{ inputs.SKIP_UTILS == 'false' }}
steps:
- name: Login to Helm Chart & Container Image Registry
uses: docker/login-action@v3
+84 -3
View File
@@ -11,14 +11,85 @@ jobs:
name: Get version
uses: ./.github/workflows/get-version.yml
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: actions/checkout@v4.2.2
with:
fetch-depth: 0
- 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/**'
webhook-service:
- 'packages/webhook-service/**'
- 'packages/shared/**'
fileimport-service:
- 'packages/fileimport-service/**'
- 'packages/shared/**'
ifc-import-service:
- 'packages/ifc-import-service/**'
- 'packages/shared/**'
monitor-deployment:
- 'packages/monitor-deployment/**'
- 'packages/shared/**'
utils:
- 'utils/**'
tests:
needs: [get-version]
needs: [get-version, changes]
uses: ./.github/workflows/tests.yml
with: {}
with:
# skipping logic only on prs
SKIP_SERVER: ${{ needs.changes.outputs.server == 'false' }}
SKIP_FRONTEND_2: ${{ needs.changes.outputs.frontend-2 == 'false' }}
SKIP_PREVIEW_SERVICE: ${{ needs.changes.outputs.preview-service == 'false' }}
SKIP_VIEWER: ${{ needs.changes.outputs.viewer == 'false' }}
SKIP_UI_COMPONENTS: ${{ needs.changes.outputs.ui-components == 'false' }}
SKIP_OBJECTSENDER: ${{ needs.changes.outputs.objectsender == 'false' }}
SKIP_SHARED: ${{ needs.changes.outputs.shared == 'false' }}
secrets: inherit
builds:
needs: [get-version]
needs: [get-version, changes]
uses: ./.github/workflows/builds.yml
with:
IMAGE_VERSION_TAG: ${{ needs.get-version.outputs.IMAGE_VERSION_TAG }}
@@ -27,6 +98,16 @@ jobs:
# REGISTRY_DOMAIN, REGISTRY_USERNAME, REGISTRY_TOKEN must be configured to match the below IMAGE_PREFIX
IMAGE_PREFIX: 'ghcr.io/specklesystems'
PUBLISH: false # do not publish the sourcemaps or include the version in frontend-2 builds for pull requests
# skipping logic only on prs
SKIP_SERVER: ${{ needs.changes.outputs.server == 'false' }}
SKIP_FRONTEND_2: ${{ needs.changes.outputs.frontend-2 == 'false' }}
SKIP_PREVIEW_SERVICE: ${{ needs.changes.outputs.preview-service == 'false' }}
SKIP_WEBHOOK_SERVICE: ${{ needs.changes.outputs.webhook-service == 'false' }}
SKIP_FILEIMPORT_SERVICE: ${{ needs.changes.outputs.fileimport-service == 'false' }}
SKIP_IFC_IMPORT_SERVICE: ${{ needs.changes.outputs.ifc-import-service == 'false' }}
SKIP_MONITOR_DEPLOYMENT: ${{ needs.changes.outputs.monitor-deployment == 'false' }}
SKIP_UTILS: ${{ needs.changes.outputs.utils == 'false' }}
secrets:
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
REGISTRY_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-1
View File
@@ -28,7 +28,6 @@ jobs:
uses: ./.github/workflows/tests.yml
with:
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:
+35 -68
View File
@@ -7,10 +7,35 @@ on:
required: false
default: false
type: boolean
DISABLE_SKIPPING:
SKIP_SERVER:
required: false
default: false
type: boolean
SKIP_FRONTEND_2:
required: false
default: false
type: boolean
SKIP_PREVIEW_SERVICE:
required: false
default: false
type: boolean
SKIP_VIEWER:
required: false
default: false
type: boolean
SKIP_UI_COMPONENTS:
required: false
default: false
type: boolean
SKIP_OBJECTSENDER:
required: false
default: false
type: boolean
SKIP_SHARED:
required: false
default: false
type: boolean
secrets:
LICENSE_TOKEN:
required: true
@@ -26,55 +51,6 @@ 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: actions/checkout@v4.2.2
with:
fetch-depth: 0
- 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
@@ -120,8 +96,7 @@ jobs:
test-frontend-2:
name: Frontend
runs-on: blacksmith-4vcpu-ubuntu-2404
needs: changes
if: ${{ needs.changes.outputs.frontend-2 == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_FRONTEND_2 == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
steps:
- uses: actions/checkout@v4.2.2
@@ -143,8 +118,7 @@ jobs:
test-viewer:
name: Viewer
runs-on: blacksmith-4vcpu-ubuntu-2404
needs: changes
if: ${{ needs.changes.outputs.viewer == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_VIEWER == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
steps:
- uses: actions/checkout@v4.2.2
@@ -175,8 +149,7 @@ jobs:
test-shared:
name: Shared
runs-on: blacksmith-4vcpu-ubuntu-2404
needs: changes
if: ${{ needs.changes.outputs.shared == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_SHARED == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
steps:
- uses: actions/checkout@v4.2.2
@@ -217,8 +190,7 @@ jobs:
test-objectsender:
name: Object Sender
runs-on: blacksmith-4vcpu-ubuntu-2404
needs: changes
if: ${{ needs.changes.outputs.objectsender == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_OBJECTSENDER == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
steps:
- uses: actions/checkout@v4.2.2
@@ -246,8 +218,7 @@ 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 }}
if: ${{ inputs.SKIP_UI_COMPONENTS == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
steps:
- uses: actions/checkout@v4.2.2
@@ -278,8 +249,7 @@ 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 }}
if: ${{ inputs.SKIP_PREVIEW_SERVICE == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
container:
image: ghcr.io/specklesystems/speckle-ubuntu-chromium:latest
@@ -332,8 +302,7 @@ jobs:
test-server:
name: Server
runs-on: blacksmith-8vcpu-ubuntu-2404
needs: changes
if: ${{ needs.changes.outputs.server == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_SERVER == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
services:
redis:
@@ -432,8 +401,7 @@ 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 }}
if: ${{ inputs.SKIP_SERVER == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
services:
redis:
@@ -521,8 +489,7 @@ jobs:
test-server-multiregion:
name: Server multiregion
needs: changes
if: ${{ needs.changes.outputs.server == 'true' || inputs.DISABLE_SKIPPING }}
if: ${{ inputs.SKIP_SERVER == 'false' }}
continue-on-error: ${{ inputs.CONTINUE_ON_ERROR }}
runs-on: blacksmith-4vcpu-ubuntu-2404
services: