Repository navigation
chore: bump restx. now deco has type #55284
Workflow file for this run
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: Main CI Pipeline | |
| on: | |
| pull_request: | |
| branches: ['main'] | |
| merge_group: | |
| branches: ['main'] | |
| types: [checks_requested] | |
| permissions: | |
| actions: write | |
| contents: write | |
| pull-requests: write | |
| checks: write | |
| statuses: write | |
| concurrency: | |
| # Pull request deduplication is owned by skip-duplicate-actions so pre_job can | |
| # publish should_skip before required status finalizers run. | |
| group: main-ci-${{ github.event.merge_group.head_sha || github.run_id }} | |
| cancel-in-progress: ${{ github.event_name == 'merge_group' }} | |
| jobs: | |
| # Keep orchestration on Depot to avoid GitHub-hosted runner queue delays. | |
| pre_job: | |
| name: Skip Duplicate Checks | |
| runs-on: depot-ubuntu-24.04 | |
| outputs: | |
| should_skip: ${{ steps.skip_check.outputs.should_skip || 'false' }} | |
| steps: | |
| - id: skip_check | |
| continue-on-error: true | |
| uses: fkirc/skip-duplicate-actions@b974a9395958c231af965b70070979a577efa578 # v5.3.2 | |
| with: | |
| cancel_others: 'true' | |
| concurrent_skipping: same_content_newer | |
| # Check which paths were changed to determine which tests to run | |
| check-changes: | |
| name: Check Changed Files | |
| runs-on: depot-ubuntu-24.04 | |
| outputs: | |
| api-changed: ${{ steps.changes.outputs.api }} | |
| cli-changed: ${{ steps.changes.outputs.cli }} | |
| e2e-changed: ${{ steps.changes.outputs.e2e }} | |
| web-changed: ${{ steps.changes.outputs.web }} | |
| vdb-changed: ${{ steps.changes.outputs.vdb }} | |
| migration-changed: ${{ steps.changes.outputs.migration }} | |
| sandbox-runtime-changed: ${{ steps.changes.outputs.sandbox-runtime }} | |
| dify-agent-changed: ${{ steps.changes.outputs.dify-agent }} | |
| python-style-changed: ${{ steps.changes.outputs.python-style }} | |
| dify-agent-style-changed: ${{ steps.changes.outputs.dify-agent-style }} | |
| web-style-changed: ${{ steps.changes.outputs.web-style }} | |
| ts-common-style-changed: ${{ steps.changes.outputs.ts-common-style }} | |
| superlinter-changed: ${{ steps.changes.outputs.superlinter }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3 | |
| id: changes | |
| with: | |
| filters: | | |
| api: | |
| - 'api/**' | |
| - 'scripts/ast_grep_guard.py' | |
| - 'scripts/check_no_new_getattr.py' | |
| - 'scripts/check_no_spec_mock.py' | |
| - 'scripts/check_no_new_test_doubles.py' | |
| - 'scripts/check_no_new_controller_sqlalchemy.py' | |
| - 'scripts/lint_controller_sqlalchemy.py' | |
| - 'scripts/ast_grep_rules/no_new_getattr.yml' | |
| - 'scripts/ast_grep_rules/no_spec_mock.yml' | |
| - 'scripts/ast_grep_rules/no_new_mock.yml' | |
| - 'scripts/ast_grep_rules/no_new_stub_subclass.yml' | |
| - 'scripts/ast_grep_rules/no_new_controller_sqlalchemy.yml' | |
| - 'scripts/ast_grep_rules/no_new_session_mock.yml' | |
| - '.github/workflows/style.yml' | |
| - '.github/workflows/main-ci.yml' | |
| - '.github/workflows/api-tests.yml' | |
| - 'docker/.env.example' | |
| - 'docker/envs/middleware.env.example' | |
| - 'docker/docker-compose.middleware.yaml' | |
| - 'docker/docker-compose-template.yaml' | |
| - 'docker/generate_docker_compose' | |
| - 'docker/ssrf_proxy/**' | |
| - 'docker/volumes/sandbox/conf/**' | |
| cli: | |
| - 'cli/**' | |
| - 'skills/**' | |
| - 'packages/contracts/**' | |
| - 'packages/tsconfig/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'lint.config.ts' | |
| - '.npmrc' | |
| - '.github/workflows/cli-tests.yml' | |
| - '.github/actions/setup-web/**' | |
| web: | |
| - 'web/**' | |
| - 'packages/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - '.github/workflows/main-ci.yml' | |
| - '.github/workflows/web-tests.yml' | |
| - '.github/actions/setup-web/**' | |
| e2e: | |
| - 'api/**' | |
| - 'e2e/**' | |
| - 'web/**' | |
| - 'packages/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'docker/docker-compose.middleware.yaml' | |
| - 'docker/envs/middleware.env.example' | |
| - 'docker/ssrf_proxy/**' | |
| - 'docker/volumes/sandbox/conf/**' | |
| - '.github/workflows/web-e2e.yml' | |
| - '.github/workflows/main-ci.yml' | |
| - '.github/actions/setup-web/**' | |
| - '.github/actions/wait-e2e-web-build/**' | |
| vdb: | |
| - 'api/core/rag/datasource/**' | |
| - 'api/tests/integration_tests/vdb/**' | |
| - 'api/conftest.py' | |
| - 'api/tests/pytest_dify.py' | |
| - 'api/providers/vdb/*/tests/**' | |
| - '.github/workflows/vdb-tests.yml' | |
| - 'docker/.env.example' | |
| - 'docker/envs/middleware.env.example' | |
| - 'docker/docker-compose.pytest.ports.yaml' | |
| - 'docker/docker-compose.yaml' | |
| - 'docker/docker-compose-template.yaml' | |
| - 'docker/generate_docker_compose' | |
| - 'docker/certbot/**' | |
| - 'docker/couchbase-server/**' | |
| - 'docker/elasticsearch/**' | |
| - 'docker/iris/**' | |
| - 'docker/nginx/**' | |
| - 'docker/pgvector/**' | |
| - 'docker/ssrf_proxy/**' | |
| - 'docker/startupscripts/**' | |
| - 'docker/tidb/**' | |
| - 'docker/volumes/**' | |
| - 'api/uv.lock' | |
| - 'api/pyproject.toml' | |
| sandbox-runtime: | |
| - 'dify-agent-runtime/**' | |
| - '.github/workflows/sandbox-runtime-tests.yml' | |
| dify-agent: | |
| - 'dify-agent/**' | |
| - '.github/workflows/dify-agent-tests.yml' | |
| migration: | |
| - 'api/migrations/**' | |
| - 'api/.env.example' | |
| - '.github/workflows/db-migration-test.yml' | |
| - 'docker/.env.example' | |
| - 'docker/envs/middleware.env.example' | |
| - 'docker/docker-compose.middleware.yaml' | |
| - 'docker/docker-compose-template.yaml' | |
| - 'docker/generate_docker_compose' | |
| - 'docker/ssrf_proxy/**' | |
| - 'docker/volumes/sandbox/conf/**' | |
| python-style: | |
| - 'api/**' | |
| - 'scripts/ast_grep_guard.py' | |
| - 'scripts/check_no_new_getattr.py' | |
| - 'scripts/check_no_spec_mock.py' | |
| - 'scripts/check_no_new_test_doubles.py' | |
| - 'scripts/check_no_new_controller_sqlalchemy.py' | |
| - 'scripts/check_no_new_session_mock.py' | |
| - 'scripts/lint_controller_sqlalchemy.py' | |
| - 'scripts/ast_grep_rules/no_new_getattr.yml' | |
| - 'scripts/ast_grep_rules/no_spec_mock.yml' | |
| - 'scripts/ast_grep_rules/no_new_mock.yml' | |
| - 'scripts/ast_grep_rules/no_new_stub_subclass.yml' | |
| - 'scripts/ast_grep_rules/no_new_controller_sqlalchemy.yml' | |
| - 'scripts/ast_grep_rules/no_new_session_mock.yml' | |
| - '.github/workflows/style.yml' | |
| - '.github/workflows/main-ci.yml' | |
| dify-agent-style: | |
| - 'dify-agent/**' | |
| - '.github/workflows/style.yml' | |
| - '.github/workflows/main-ci.yml' | |
| web-style: | |
| - 'web/**' | |
| - 'e2e/**' | |
| - 'sdks/nodejs-client/**' | |
| - 'packages/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'knip.config.ts' | |
| - 'scripts/check-web-production-unused-after-knip-fix.mjs' | |
| - '.npmrc' | |
| - '.github/workflows/main-ci.yml' | |
| - '.github/workflows/web-bundle-size.yml' | |
| - '.github/workflows/style.yml' | |
| - '.github/actions/setup-web/**' | |
| ts-common-style: | |
| - 'web/**' | |
| - 'cli/**' | |
| - 'skills/**' | |
| - 'e2e/**' | |
| - 'sdks/nodejs-client/**' | |
| - 'packages/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'tsconfig.json' | |
| - 'vite.config.ts' | |
| - 'lint.config.ts' | |
| - 'eslint.config.mjs' | |
| - 'knip.config.ts' | |
| - 'scripts/check-web-production-unused-after-knip-fix.mjs' | |
| - 'oxlint-suppressions.json' | |
| - 'eslint-suppressions.json' | |
| - '.vscode/**' | |
| - '.github/**' | |
| superlinter: | |
| - '**.sh' | |
| - '**.yaml' | |
| - '**.yml' | |
| - '**Dockerfile' | |
| - 'dev/**' | |
| - '.editorconfig' | |
| - '.vite-hooks/**' | |
| # Finalizers report unchanged paths directly, avoiding separate skip-only jobs. | |
| # Keep each required check name stable and fail closed if classification fails. | |
| api-tests-run: | |
| name: Run API Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.api-changed == 'true' | |
| uses: ./.github/workflows/api-tests.yml | |
| secrets: inherit | |
| api-tests: | |
| name: API Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - api-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize API Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.api-changed }} | |
| RUN_RESULT: ${{ needs.api-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "API tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "API tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "API tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "API tests were skipped because no API-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| cli-tests-run: | |
| name: Run CLI Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.cli-changed == 'true' | |
| uses: ./.github/workflows/cli-tests.yml | |
| secrets: inherit | |
| cli-tests: | |
| name: CLI Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - cli-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize CLI Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.cli-changed }} | |
| RUN_RESULT: ${{ needs.cli-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "CLI tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "CLI tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "CLI tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "CLI tests were skipped because no CLI-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| web-tests-run: | |
| name: Run Web Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.web-changed == 'true' | |
| uses: ./.github/workflows/web-tests.yml | |
| secrets: inherit | |
| web-tests: | |
| name: Web Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - web-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize Web Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.web-changed }} | |
| RUN_RESULT: ${{ needs.web-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "Web tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "Web tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "Web tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "Web tests were skipped because no web-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| web-e2e-run: | |
| name: Run Web Full-Stack E2E | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.e2e-changed == 'true' | |
| uses: ./.github/workflows/web-e2e.yml | |
| with: | |
| run-external-runtime: false | |
| secrets: inherit | |
| web-e2e: | |
| name: Web Full-Stack E2E | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - web-e2e-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize Web Full-Stack E2E status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.e2e-changed }} | |
| RUN_RESULT: ${{ needs.web-e2e-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "Web full-stack E2E was skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "Web full-stack E2E ran successfully." | |
| exit 0 | |
| fi | |
| echo "Web full-stack E2E was required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "Web full-stack E2E was skipped because no E2E-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| style-check: | |
| name: Style Check | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| uses: ./.github/workflows/style.yml | |
| with: | |
| base-rev: ${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha }} | |
| classification-succeeded: ${{ needs.check-changes.result == 'success' }} | |
| run-python-style: ${{ needs.check-changes.outputs.python-style-changed == 'true' }} | |
| run-dify-agent-style: ${{ needs.check-changes.outputs.dify-agent-style-changed == 'true' }} | |
| run-web-style: ${{ needs.check-changes.outputs.web-style-changed == 'true' }} | |
| run-ts-common-style: ${{ needs.check-changes.outputs.ts-common-style-changed == 'true' }} | |
| run-superlinter: ${{ needs.check-changes.outputs.superlinter-changed == 'true' }} | |
| skip-checks: ${{ needs.pre_job.outputs.should_skip == 'true' }} | |
| vdb-tests-run: | |
| name: Run VDB Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.vdb-changed == 'true' | |
| uses: ./.github/workflows/vdb-tests.yml | |
| vdb-tests: | |
| name: VDB Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - vdb-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize VDB Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.vdb-changed }} | |
| RUN_RESULT: ${{ needs.vdb-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "VDB tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "VDB tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "VDB tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "VDB tests were skipped because no VDB-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| db-migration-test-run: | |
| name: Run DB Migration Test | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.migration-changed == 'true' | |
| uses: ./.github/workflows/db-migration-test.yml | |
| db-migration-test: | |
| name: DB Migration Test | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - db-migration-test-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize DB Migration Test status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.migration-changed }} | |
| RUN_RESULT: ${{ needs.db-migration-test-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "DB migration tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "DB migration tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "DB migration tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "DB migration tests were skipped because no migration-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| sandbox-runtime-tests-run: | |
| name: Run Sandbox Runtime Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.sandbox-runtime-changed == 'true' | |
| uses: ./.github/workflows/sandbox-runtime-tests.yml | |
| secrets: inherit | |
| sandbox-runtime-tests: | |
| name: Sandbox Runtime Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - sandbox-runtime-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize Sandbox Runtime Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.sandbox-runtime-changed }} | |
| RUN_RESULT: ${{ needs.sandbox-runtime-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "Sandbox runtime tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "Sandbox runtime tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "Sandbox runtime tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "Sandbox runtime tests were skipped because no sandbox-runtime-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 | |
| dify-agent-tests-run: | |
| name: Run Dify Agent Tests | |
| needs: | |
| - pre_job | |
| - check-changes | |
| if: needs.pre_job.outputs.should_skip != 'true' && needs.check-changes.outputs.dify-agent-changed == 'true' | |
| uses: ./.github/workflows/dify-agent-tests.yml | |
| secrets: inherit | |
| dify-agent-tests: | |
| name: Dify Agent Tests | |
| if: ${{ always() }} | |
| needs: | |
| - pre_job | |
| - check-changes | |
| - dify-agent-tests-run | |
| runs-on: depot-ubuntu-24.04 | |
| steps: | |
| - name: Finalize Dify Agent Tests status | |
| env: | |
| SHOULD_SKIP_WORKFLOW: ${{ needs.pre_job.outputs.should_skip }} | |
| TESTS_CHANGED: ${{ needs.check-changes.outputs.dify-agent-changed }} | |
| RUN_RESULT: ${{ needs.dify-agent-tests-run.result }} | |
| PRE_JOB_RESULT: ${{ needs.pre_job.result }} | |
| CHANGES_RESULT: ${{ needs.check-changes.result }} | |
| run: | | |
| if [[ "$SHOULD_SKIP_WORKFLOW" == 'true' ]]; then | |
| echo "Dify agent tests were skipped because this workflow run duplicated a successful or newer run." | |
| exit 0 | |
| fi | |
| if [[ "$PRE_JOB_RESULT" != 'success' || "$CHANGES_RESULT" != 'success' ]]; then | |
| echo "Cannot finalize tests: duplicate check=$PRE_JOB_RESULT, change detection=$CHANGES_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'true' ]]; then | |
| if [[ "$RUN_RESULT" == 'success' ]]; then | |
| echo "Dify agent tests ran successfully." | |
| exit 0 | |
| fi | |
| echo "Dify agent tests were required but finished with result: $RUN_RESULT" >&2 | |
| exit 1 | |
| fi | |
| if [[ "$TESTS_CHANGED" == 'false' && "$RUN_RESULT" == 'skipped' ]]; then | |
| echo "Dify agent tests were skipped because no dify-agent-related files changed." | |
| exit 0 | |
| fi | |
| echo "Unexpected test state: changed=$TESTS_CHANGED, result=$RUN_RESULT" >&2 | |
| exit 1 |