♻️ RabbitMQ: Make sure exclusive queues are not set as durable (⚠️ de… #48343
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| # NOTE: this CI workflow is running a number of unit/integration/system tests jobs | |
| # and also builds a set of "test" docker images (required for integration/system tests) | |
| # if all tests are passing, and the CI runs on the master branch, then it will also deploy | |
| # the "test" docker images to dockerhub registry | |
| # | |
| # in PRs: only the jobs that needs to run will be run by detecting file changes | |
| # | |
| # NOTE2: to keep the github branch protection simpler, the required jobs are the ones named: | |
| # unit-tests, integration-tests, and system-tests | |
| on: | |
| push: | |
| branches: | |
| - "*" | |
| tags-ignore: | |
| - "*" | |
| pull_request: | |
| branches: | |
| - "*" | |
| # https://github.blog/changelog/2023-02-08-pull-request-merge-queue-public-beta/ | |
| merge_group: | |
| branches: | |
| - "master" | |
| workflow_dispatch: | |
| inputs: | |
| force_all_builds: | |
| description: "Run all tests and builds" | |
| required: false | |
| type: boolean | |
| default: false | |
| env: | |
| # NOTE: 'COLUMNS' is a shell env var that represents the width (number of columns) | |
| # of the terminal or command-line interface in characters. | |
| COLUMNS: 120 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| changes: | |
| name: detect file changes since last push | |
| runs-on: ubuntu-latest | |
| # Set job outputs to values from filter step | |
| outputs: | |
| aws-library: ${{ steps.filter.outputs.aws-library }} | |
| celery-library: ${{ steps.filter.outputs.celery-library }} | |
| dask-task-models-library: ${{ steps.filter.outputs.dask-task-models-library }} | |
| models-library: ${{ steps.filter.outputs.models-library }} | |
| common-library: ${{ steps.filter.outputs.common-library }} | |
| notifications-library: ${{ steps.filter.outputs.notifications-library }} | |
| postgres-database: ${{ steps.filter.outputs.postgres-database }} | |
| service-integration: ${{ steps.filter.outputs.service-integration }} | |
| service-library: ${{ steps.filter.outputs.service-library }} | |
| settings-library: ${{ steps.filter.outputs.settings-library }} | |
| simcore-sdk: ${{ steps.filter.outputs.simcore-sdk }} | |
| agent: ${{ steps.filter.outputs.agent }} | |
| notifications: ${{ steps.filter.outputs.notifications }} | |
| api: ${{ steps.filter.outputs.api }} | |
| api-server: ${{ steps.filter.outputs.api-server }} | |
| autoscaling: ${{ steps.filter.outputs.autoscaling }} | |
| catalog: ${{ steps.filter.outputs.catalog }} | |
| clusters-keeper: ${{ steps.filter.outputs.clusters-keeper }} | |
| dask-sidecar: ${{ steps.filter.outputs.dask-sidecar }} | |
| datcore-adapter: ${{ steps.filter.outputs.datcore-adapter }} | |
| director: ${{ steps.filter.outputs.director }} | |
| director-v2: ${{ steps.filter.outputs.director-v2 }} | |
| dynamic-sidecar: ${{ steps.filter.outputs.dynamic-sidecar }} | |
| efs-guardian: ${{ steps.filter.outputs.efs-guardian }} | |
| invitations: ${{ steps.filter.outputs.invitations }} | |
| migration: ${{ steps.filter.outputs.migration }} | |
| payments: ${{ steps.filter.outputs.payments }} | |
| dynamic-scheduler: ${{ steps.filter.outputs.dynamic-scheduler }} | |
| docker-api-proxy: ${{ steps.filter.outputs.docker-api-proxy }} | |
| resource-usage-tracker: ${{ steps.filter.outputs.resource-usage-tracker }} | |
| static-webserver: ${{ steps.filter.outputs.static-webserver }} | |
| storage: ${{ steps.filter.outputs.storage }} | |
| webserver: ${{ steps.filter.outputs.webserver }} | |
| anything: ${{ steps.filter.outputs.anything }} | |
| anything-py: ${{ steps.filter.outputs.anything-py }} | |
| anything-js: ${{ steps.filter.outputs.anything-js }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| # For pull requests it's not necessary to checkout the code | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| aws-library: | |
| - 'packages/aws-library/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| celery-library: | |
| - 'packages/celery-library/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| dask-task-models-library: | |
| - 'packages/dask-task-models-library/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| models-library: | |
| - 'packages/models-library/**' | |
| - 'packages/postgres-database/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| common-library: | |
| - 'packages/common-library/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| notifications-library: | |
| - 'packages/notifications-library/**' | |
| - 'packages/postgres-database/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| postgres-database: | |
| - 'packages/postgres-database/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| service-integration: | |
| - 'packages/models-library/**' | |
| - 'packages/pytest-simcore/**' | |
| - 'packages/service-integration/**' | |
| - 'services/docker-compose*' | |
| - 'mypy.ini' | |
| service-library: | |
| - 'packages/pytest-simcore/**' | |
| - 'packages/service-library/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| settings-library: | |
| - 'packages/pytest-simcore/**' | |
| - 'packages/settings-library/**' | |
| - 'services/docker-compose*' | |
| - 'mypy.ini' | |
| simcore-sdk: | |
| - 'packages/**' | |
| - 'services/docker-compose*' | |
| - 'mypy.ini' | |
| agent: | |
| - 'packages/**' | |
| - 'services/agent/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| notifications: | |
| - 'packages/**' | |
| - 'services/notifications/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| api: | |
| - 'api/**' | |
| - 'mypy.ini' | |
| api-server: | |
| - 'packages/**' | |
| - 'services/api-server/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| autoscaling: | |
| - 'packages/**' | |
| - 'services/autoscaling/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| catalog: | |
| - 'packages/**' | |
| - 'services/catalog/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| clusters-keeper: | |
| - 'packages/**' | |
| - 'services/clusters-keeper/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| dask-sidecar: | |
| - 'packages/**' | |
| - 'services/dask-sidecar/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| datcore-adapter: | |
| - 'packages/**' | |
| - 'services/datcore-adapter/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| director: | |
| - 'packages/**' | |
| - 'services/director/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| director-v2: | |
| - 'packages/**' | |
| - 'services/director-v2/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| dynamic-sidecar: | |
| - 'packages/**' | |
| - 'services/dynamic-sidecar/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| efs-guardian: | |
| - 'packages/**' | |
| - 'services/efs-guardian/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| invitations: | |
| - 'packages/**' | |
| - 'services/invitations/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| migration: | |
| - 'packages/**' | |
| - 'services/migration/**' | |
| - 'services/docker-compose*' | |
| - 'mypy.ini' | |
| payments: | |
| - 'packages/**' | |
| - 'services/payments/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| dynamic-scheduler: | |
| - 'packages/**' | |
| - 'services/dynamic-scheduler/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| docker-api-proxy: | |
| - 'packages/**' | |
| - 'services/docker-api-proxy/**' | |
| - 'mypy.ini' | |
| resource-usage-tracker: | |
| - 'packages/**' | |
| - 'services/resource-usage-tracker/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| static-webserver: | |
| - 'services/static-webserver/**' | |
| - 'services/docker-compose*' | |
| storage: | |
| - 'packages/**' | |
| - 'services/storage/**' | |
| - 'services/docker-compose*' | |
| - 'scripts/mypy/*' | |
| - 'mypy.ini' | |
| webserver: | |
| - 'packages/**' | |
| - 'services/web/**' | |
| - 'services/docker-compose*' | |
| - 'mypy.ini' | |
| anything: | |
| - 'packages/**' | |
| - 'services/**' | |
| - 'tests/**' | |
| - 'mypy.ini' | |
| anything-py: | |
| - '**/*.py' | |
| - 'mypy.ini' | |
| anything-js: | |
| - '**/*.js' | |
| build-test-images: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.anything == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| strategy: | |
| matrix: | |
| type: [backend, frontend] | |
| fail-fast: false | |
| uses: ./.github/workflows/_reusable-build-images.yml | |
| with: | |
| build-backend: ${{ matrix.type == 'backend' }} | |
| build-frontend: ${{ matrix.type == 'frontend' }} | |
| os: ubuntu-24.04 | |
| python-version: "3.11" | |
| unit-test-webserver-01: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.webserver == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 25 # if this timeout gets too small, then split the tests | |
| name: "[unit] webserver 01" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/web/server/requirements/ci.txt" | |
| - name: install webserver | |
| run: ./ci/github/unit-testing/webserver.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/webserver.bash typecheck | |
| - name: test isolated | |
| run: ./ci/github/unit-testing/webserver.bash test_isolated | |
| - name: test | |
| run: ./ci/github/unit-testing/webserver.bash test_with_db 01 | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-webserver-02: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.webserver == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 35 # if this timeout gets too small, then split the tests | |
| name: "[unit] webserver 02" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/web/server/requirements/ci.txt" | |
| - name: install webserver | |
| run: ./ci/github/unit-testing/webserver.bash install | |
| - name: test | |
| run: ./ci/github/unit-testing/webserver.bash test_with_db 02 | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-webserver-03: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.webserver == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 25 # if this timeout gets too small, then split the tests | |
| name: "[unit] webserver 03" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/web/server/requirements/ci.txt" | |
| - name: install webserver | |
| run: ./ci/github/unit-testing/webserver.bash install | |
| - name: test | |
| run: ./ci/github/unit-testing/webserver.bash test_with_db 03 | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-webserver-04: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.webserver == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 25 # if this timeout gets too small, then split the tests | |
| name: "[unit] webserver 04" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/web/server/requirements/ci.txt" | |
| - name: install webserver | |
| run: ./ci/github/unit-testing/webserver.bash install | |
| - name: test | |
| run: ./ci/github/unit-testing/webserver.bash test_with_db 04 | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-storage: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.storage == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 25 # if this timeout gets too small, then split the tests | |
| name: "[unit] storage" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/storage/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/storage.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/storage.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/storage.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-agent: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.agent == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] agent" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/agent/requirements/ci.txt" | |
| - name: install rclone | |
| run: sudo ./ci/github/helpers/install_rclone.bash | |
| - name: install | |
| run: ./ci/github/unit-testing/agent.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/agent.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/agent.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-notifications: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.notifications == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] notifications" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/notifications/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/notifications.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/notifications.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/notifications.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-api: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.api == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] api" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/api/requirements/ci.txt" | |
| - name: install api | |
| run: ./ci/github/unit-testing/api.bash install | |
| - name: test | |
| run: ./ci/github/unit-testing/api.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-api-server: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.api-server == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] api-server" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/api-server/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/api-server.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/api-server.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/api-server.bash test | |
| - name: OAS backwards compatibility check | |
| run: ./ci/github/unit-testing/api-server.bash openapi-diff | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-autoscaling: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.autoscaling == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] autoscaling" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/autoscaling/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/autoscaling.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/autoscaling.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/autoscaling.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-catalog: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.catalog == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] catalog" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/catalog/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/catalog.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/catalog.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/catalog.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/catalog/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-clusters-keeper: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.clusters-keeper == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] clusters-keeper" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/clusters-keeper/requirements/ci.txt" | |
| - name: install | |
| run: | | |
| make devenv | |
| source .venv/bin/activate && \ | |
| pushd services/clusters-keeper && \ | |
| make install-ci | |
| - name: typecheck | |
| run: | | |
| source .venv/bin/activate && \ | |
| uv pip install mypy && \ | |
| pushd services/clusters-keeper && \ | |
| make mypy | |
| - name: test | |
| run: | | |
| source .venv/bin/activate && \ | |
| pushd services/clusters-keeper && \ | |
| make test-ci-unit | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-datcore-adapter: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.datcore-adapter == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] datcore-adapter" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/datcore-adapter/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/datcore-adapter.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/datcore-adapter.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/datcore-adapter.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/datcore-adapter/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-director: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.director == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] director" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/director/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/director.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/director.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/director.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/director/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-director-v2: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.director-v2 == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] director-v2" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/director-v2/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/director-v2.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/director-v2.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/director-v2.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/director-v2/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-aws-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.aws-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] aws-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/aws-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/aws-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/aws-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/aws-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-celery-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.celery-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] celery-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/celery-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/celery-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/celery-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/celery-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-dask-task-models-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.dask-task-models-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] dask-task-models-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/dask-task-models-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/dask-task-models-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/dask-task-models-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/dask-task-models-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-dask-sidecar: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.dask-sidecar == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] dask-sidecar" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/dask-sidecar/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/dask-sidecar.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/dask-sidecar.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/dask-sidecar.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-payments: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.payments == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] payments" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/payments/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/payments.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/payments.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/payments.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-dynamic-scheduler: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.dynamic-scheduler == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] dynamic-scheduler" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/dynamic-scheduler/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/dynamic-scheduler.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/dynamic-scheduler.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/dynamic-scheduler.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-resource-usage-tracker: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.resource-usage-tracker == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] resource-usage-tracker" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/resource-usage-tracker/requirements/ci.txt" | |
| - name: install | |
| run: | | |
| make devenv | |
| source .venv/bin/activate && \ | |
| pushd services/resource-usage-tracker && \ | |
| make install-ci | |
| - name: typecheck | |
| run: | | |
| source .venv/bin/activate && \ | |
| pushd services/resource-usage-tracker && \ | |
| make mypy | |
| - name: test | |
| run: | | |
| source .venv/bin/activate && \ | |
| pushd services/resource-usage-tracker && \ | |
| make test-ci-unit | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-dynamic-sidecar: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.dynamic-sidecar == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 19 # if this timeout gets too small, then split the tests | |
| name: "[unit] dynamic-sidecar" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/dynamic-sidecar/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/dynamic-sidecar.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/dynamic-sidecar.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/dynamic-sidecar.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-efs-guardian: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.efs-guardian == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] efs-guardian" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/efs-guardian/requirements/ci.txt" | |
| - name: install | |
| run: | | |
| make devenv | |
| source .venv/bin/activate && \ | |
| pushd services/efs-guardian && \ | |
| make install-ci | |
| - name: typecheck | |
| run: | | |
| source .venv/bin/activate && \ | |
| uv pip install mypy && \ | |
| pushd services/efs-guardian && \ | |
| make mypy | |
| - name: test | |
| run: | | |
| source .venv/bin/activate && \ | |
| pushd services/efs-guardian && \ | |
| make test-ci-unit | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-python-linting: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] python-linting" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11", "3.12"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/pylint/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/python-linting.bash install | |
| - name: test | |
| run: ./ci/github/unit-testing/python-linting.bash test | |
| unit-test-postgres-database: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.postgres-database == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] postgres-database" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/postgres-database/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/postgres-database.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/postgres-database.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/postgres-database.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-invitations: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.invitations == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] invitations" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/invitations/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/invitations.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/invitations.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/invitations.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-service-integration: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.service-integration == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] service-integration" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/service-integration/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/service-integration.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/service-integration.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/service-integration.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-service-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.service-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 20 # if this timeout gets too small, then split the tests | |
| name: "[unit] service-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/service-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/service-library.bash install_all | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/service-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/service-library.bash test_all | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-settings-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.settings-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] settings-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/settings-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/settings-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/settings-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/settings-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-models-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.models-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] models-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/models-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/models-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/models-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/models-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-common-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.common-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] common-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/common-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/common-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/common-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/common-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-notifications-library: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.notifications-library == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] notifications-library" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/notifications-library/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/unit-testing/notifications-library.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/notifications-library.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/notifications-library.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-test-simcore-sdk: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.simcore-sdk == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 18 # if this timeout gets too small, then split the tests | |
| name: "[unit] simcore-sdk" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/simcore-sdk/requirements/ci.txt" | |
| - name: install rclone | |
| run: sudo ./ci/github/helpers/install_rclone.bash | |
| - name: install | |
| run: ./ci/github/unit-testing/simcore-sdk.bash install | |
| - name: typecheck | |
| run: ./ci/github/unit-testing/simcore-sdk.bash typecheck | |
| - name: test | |
| run: ./ci/github/unit-testing/simcore-sdk.bash test | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: unittests #optional | |
| unit-tests: | |
| # NOTE: this is a github required status check! | |
| if: ${{ always() }} | |
| needs: | |
| [ | |
| unit-test-agent, | |
| unit-test-api-server, | |
| unit-test-api, | |
| unit-test-autoscaling, | |
| unit-test-catalog, | |
| unit-test-clusters-keeper, | |
| unit-test-dask-sidecar, | |
| unit-test-aws-library, | |
| unit-test-celery-library, | |
| unit-test-dask-task-models-library, | |
| unit-test-datcore-adapter, | |
| unit-test-director-v2, | |
| unit-test-director, | |
| unit-test-dynamic-sidecar, | |
| unit-test-efs-guardian, | |
| unit-test-models-library, | |
| unit-test-common-library, | |
| unit-test-notifications-library, | |
| unit-test-payments, | |
| unit-test-notifications, | |
| unit-test-dynamic-scheduler, | |
| unit-test-postgres-database, | |
| unit-test-python-linting, | |
| unit-test-resource-usage-tracker, | |
| unit-test-service-integration, | |
| unit-test-service-library, | |
| unit-test-settings-library, | |
| unit-test-simcore-sdk, | |
| unit-test-storage, | |
| unit-test-webserver-01, | |
| unit-test-webserver-02, | |
| unit-test-webserver-03, | |
| unit-test-webserver-04, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: a previous unit-test job failed or was cancelled | |
| if: ${{ contains(join(needs.*.result, ','), 'failure') || contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: | | |
| echo "::error title=ERROR::one of the unit-tests failed or was cancelled!" | |
| exit 1 | |
| - name: all the previous unit-tests were run successfully or skipped | |
| if: ${{ !contains(join(needs.*.result, ','), 'failure') && !contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: echo "::notice All good!" | |
| integration-test-webserver-01: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.webserver == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] webserver 01" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/web/server/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install | |
| run: ./ci/github/integration-testing/webserver.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/webserver.bash test 01 | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/web/server/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests #optional | |
| integration-test-director-v2-01: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.director-v2 == 'true' || github.event_name == 'push'}} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] director-v2 01" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/director-v2/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install | |
| run: ./ci/github/integration-testing/director-v2.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/director-v2.bash test 01 | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/director-v2/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests #optional | |
| integration-test-director-v2-02: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.director-v2 == 'true' || github.event_name == 'push' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] director-v2 02" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| env: | |
| # NOTE: DIRECTOR_DEFAULT_MAX_* used for integration-tests that include `director` service | |
| DIRECTOR_DEFAULT_MAX_MEMORY: 268435456 | |
| DIRECTOR_DEFAULT_MAX_NANO_CPUS: 10000000 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/director-v2/requirements/ci.txt" | |
| - name: setup rclone docker volume plugin | |
| run: sudo ./ci/github/helpers/install_rclone_docker_volume_plugin.bash | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install rclone | |
| run: sudo ./ci/github/helpers/install_rclone.bash | |
| - name: install | |
| run: ./ci/github/integration-testing/director-v2.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/director-v2.bash test 02 | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/director-v2/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests #optional | |
| integration-test-dynamic-sidecar: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.dynamic-sidecar == 'true' || github.event_name == 'push'}} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] dynamic-sidecar" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/dynamic-sidecar/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install rclone | |
| run: sudo ./ci/github/helpers/install_rclone.bash | |
| - name: install | |
| run: ./ci/github/integration-testing/dynamic-sidecar.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/dynamic-sidecar.bash test 01 | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/dynamic-sidecar/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests #optional | |
| integration-test-docker-api-proxy: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.docker-api-proxy == 'true' || github.event_name == 'push'}} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] docker-api-proxy" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/docker-api-proxy/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install | |
| run: ./ci/github/integration-testing/docker-api-proxy.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/docker-api-proxy.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./services/docker-api-proxy/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests #optional | |
| integration-test-simcore-sdk: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything-py == 'true' || needs.changes.outputs.simcore-sdk == 'true' || github.event_name == 'push' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[int] simcore-sdk" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/simcore-sdk/requirements/ci.txt" | |
| - name: install rclone | |
| run: sudo ./ci/github/helpers/install_rclone.bash | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "backend" | |
| - name: install | |
| run: ./ci/github/integration-testing/simcore-sdk.bash install | |
| - name: test | |
| run: ./ci/github/integration-testing/simcore-sdk.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./packages/simcore-sdk/test_failures | |
| - uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| with: | |
| flags: integrationtests | |
| integration-tests: | |
| # NOTE: this is a github required status check! | |
| if: ${{ always() }} | |
| needs: | |
| [ | |
| integration-test-director-v2-01, | |
| integration-test-director-v2-02, | |
| integration-test-dynamic-sidecar, | |
| integration-test-docker-api-proxy, | |
| integration-test-simcore-sdk, | |
| integration-test-webserver-01, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: a previous integration-test job failed or was cancelled | |
| if: ${{ contains(join(needs.*.result, ','), 'failure') || contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: | | |
| echo "::error title=ERROR::one of the integration-tests failed or was cancelled!" | |
| exit 1 | |
| - name: all the previous integration-tests were run successfully or skipped | |
| if: ${{ !contains(join(needs.*.result, ','), 'failure') && !contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: echo "::notice All good!" | |
| system-test-public-api: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 25 # if this timeout gets too small, then split the tests | |
| name: "[sys] public api" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/public-api/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "*" | |
| - name: install | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: ./ci/github/system-testing/public-api.bash install | |
| - name: test | |
| run: ./ci/github/system-testing/public-api.bash test | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./test_failures | |
| system-test-swarm-deploy: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[sys] deploy simcore" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/swarm-deploy/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "*" | |
| - name: install | |
| run: ./ci/github/system-testing/swarm-deploy.bash install | |
| - name: test | |
| run: ./ci/github/system-testing/swarm-deploy.bash test | |
| - name: dump services setting schemas | |
| run: export DOCKER_REGISTRY=local; export DOCKER_IMAGE_TAG=production; make settings-schema.json | |
| - name: upload services settings schemas | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_services_settings_schemas | |
| path: ./services/**/settings-schema.json | |
| - name: upload failed tests logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./test_failures | |
| system-test-e2e: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[sys] e2e" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| node: [14] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/e2e/requirements/requirements.txt" | |
| - uses: actions/[email protected] | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: "npm" | |
| cache-dependency-path: "tests/e2e/package-lock.json" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "*" | |
| - name: setup | |
| run: ./ci/github/system-testing/e2e.bash install | |
| - name: test | |
| run: ./ci/github/system-testing/e2e.bash test | |
| - name: wait before dumping logs | |
| if: ${{ failure() }} | |
| run: sleep 5 | |
| - name: dump docker logs | |
| if: ${{ failure() }} | |
| id: docker_logs_dump | |
| run: ./ci/github/system-testing/e2e.bash dump_docker_logs | |
| - name: upload docker logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./tests/e2e/test_failures | |
| - name: upload screenshots | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_screenshots | |
| path: tests/e2e/screenshots | |
| - name: upload e2e logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_logs | |
| path: tests/e2e/logs | |
| system-test-e2e-playwright: | |
| needs: [changes, build-test-images] | |
| if: ${{ needs.changes.outputs.anything == 'true' || github.event_name == 'push' || github.event.inputs.force_all_builds == 'true' }} | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[sys] e2e-playwright" | |
| runs-on: ${{ matrix.os }} | |
| # NOTE: this is an interesting way, but generate a load of issues like not having docker installed, etc etc. | |
| # container: | |
| # image: mcr.microsoft.com/playwright/python:v1.39.0-jammy | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/e2e-playwright/requirements/ci.txt" | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "*" | |
| - name: prepare devenv | |
| run: make devenv | |
| - name: setup | |
| run: | | |
| ./ci/github/system-testing/e2e-playwright.bash install | |
| - name: test | |
| run: | | |
| ./ci/github/system-testing/e2e-playwright.bash test | |
| - name: wait before dumping logs | |
| if: ${{ failure() }} | |
| run: sleep 5 | |
| - name: dump docker logs | |
| if: ${{ failure() }} | |
| id: docker_logs_dump | |
| run: ./ci/github/system-testing/e2e-playwright.bash dump_docker_logs | |
| - name: upload docker logs | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_docker_logs | |
| path: ./tests/e2e-playwright/test_failures | |
| - name: upload tracing if failed | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }}_tracing | |
| path: tests/e2e-playwright/test-results | |
| system-test-environment-setup: | |
| timeout-minutes: 30 # if this timeout gets too small, then split the tests | |
| name: "[sys] environment setup" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/environment-setup/requirements/ci.txt" | |
| - name: install | |
| run: ./ci/github/system-testing/environment-setup.bash install | |
| - name: test | |
| run: ./ci/github/system-testing/environment-setup.bash test | |
| system-tests: | |
| # NOTE: this is a github required status check! | |
| if: ${{ always() }} | |
| needs: | |
| [ | |
| system-test-e2e, | |
| system-test-e2e-playwright, | |
| system-test-environment-setup, | |
| system-test-public-api, | |
| system-test-swarm-deploy, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: a previous system-test job failed or was cancelled | |
| if: ${{ contains(join(needs.*.result, ','), 'failure') || contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: | | |
| echo "::error title=ERROR::one of the system-tests failed or was cancelled!" | |
| exit 1 | |
| - name: all the previous system-tests were run successfully or skipped | |
| if: ${{ !contains(join(needs.*.result, ','), 'failure') && !contains(join(needs.*.result, ','), 'cancelled') }} | |
| run: echo "::notice All good!" | |
| deploy: | |
| name: deploy to dockerhub | |
| if: github.event_name == 'push' | |
| needs: [unit-tests, integration-tests, system-tests] | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| python: ["3.11"] | |
| os: [ubuntu-24.04] | |
| fail-fast: false | |
| env: | |
| # secrets can be set in settings/secrets on github | |
| DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }} | |
| DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
| DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup SimCore environment | |
| uses: ./.github/actions/setup-simcore-env | |
| with: | |
| python-version: ${{ matrix.python }} | |
| cache-dependency-glob: "**/e2e-playwright/requirements/ci.txt" | |
| show-system-versions: false | |
| - name: Download and load Docker images | |
| uses: ./.github/actions/download-load-docker-images | |
| with: | |
| artifact-name-pattern: "*" | |
| - name: set owner variable | |
| run: echo "OWNER=${GITHUB_REPOSITORY%/*}" >> $GITHUB_ENV | |
| - if: github.ref == 'refs/heads/master' | |
| name: deploy master image | |
| env: | |
| TAG_PREFIX: master-github | |
| run: ./ci/deploy/dockerhub-deploy.bash -n | |
| - if: contains(github.ref, 'refs/heads/hotfix_v') | |
| name: deploy release hotfix image | |
| env: | |
| TAG_PREFIX: hotfix-github | |
| run: ./ci/deploy/dockerhub-deploy.bash -n | |
| - if: contains(github.ref, 'refs/heads/hotfix_staging_') | |
| name: deploy staging hotfix image | |
| env: | |
| TAG_PREFIX: hotfix-staging-github | |
| run: ./ci/deploy/dockerhub-deploy.bash -n |