feat(i18n): migrate database-analysis page (RI-8276) #7351
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: ✅ Tests | |
| on: | |
| push: | |
| branches-ignore: | |
| - main | |
| - latest | |
| - 'release/**' | |
| pull_request: | |
| types: [labeled] | |
| workflow_dispatch: | |
| inputs: | |
| redis_client: | |
| description: Library to use for redis connection | |
| default: 'ioredis' | |
| type: choice | |
| options: | |
| - ioredis | |
| - node-redis | |
| short_rte_list: | |
| description: Use short RTE list for IT | |
| type: boolean | |
| default: true | |
| debug: | |
| description: Enable SSH Debug (IT and E2E) | |
| default: false | |
| type: boolean | |
| workflow_call: | |
| inputs: | |
| short_rte_list: | |
| description: Use short rte list | |
| type: boolean | |
| default: true | |
| pre_release: | |
| description: Is pre-release | |
| default: false | |
| type: boolean | |
| debug: | |
| description: Enable SSH Debug | |
| default: false | |
| type: boolean | |
| # Cancel a previous run workflow. | |
| # Key by head identity (not github.ref) so the push-triggered run and the | |
| # pull_request-triggered run for the same branch share one concurrency group | |
| # and cancel each other, instead of running the full suite twice in parallel. | |
| # - push: head_ref is empty -> falls back to ref_name (branch name) | |
| # - pull_request: head_ref is the source branch name | |
| # Qualify by the head repo so fork PRs that happen to share a branch name | |
| # (e.g. "main") don't collide and cancel each other's runs; for same-repo | |
| # events this resolves to github.repository, preserving the push<->PR merge. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }} | |
| cancel-in-progress: true | |
| jobs: | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| backend: ${{ steps.filter.outputs.backend }} | |
| desktop: ${{ steps.filter.outputs.desktop }} | |
| docker: ${{ steps.filter.outputs.docker }} | |
| infra: ${{ steps.filter.outputs.infra }} | |
| steps: | |
| - uses: actions/checkout@v7.0.0 | |
| - uses: dorny/paths-filter@v4.0.1 | |
| id: filter | |
| with: | |
| # Compare against main so each push's gating reflects the | |
| # cumulative branch diff, not just the latest commit. Keeps | |
| # the merge-gate aligned with what would actually land. | |
| base: main | |
| filters: | | |
| frontend: | |
| - 'redisinsight/ui/**' | |
| backend: | |
| - 'redisinsight/api/**' | |
| desktop: | |
| - 'redisinsight/desktop/**' | |
| docker: | |
| - 'Dockerfile*' | |
| - '.dockerignore' | |
| - '*docker*.sh' | |
| # Shared toolchain / CI config — when these change, run everything. | |
| infra: | |
| - 'package.json' | |
| - 'yarn.lock' | |
| - '.yarnrc' | |
| - '.nvmrc' | |
| - '.eslintrc*' | |
| - '.eslintignore' | |
| - 'babel.config*' | |
| - 'jest.config*' | |
| - 'jest-resolver.js' | |
| - 'configs/**' | |
| - 'scripts/**' | |
| - '.github/workflows/**' | |
| - '.github/actions/**' | |
| # Compute per-consumer "should this run" decisions from changes, labels, | |
| # pre-release input, and manual dispatch. One job, one source of truth. | |
| should-run: | |
| needs: changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| ui: ${{ steps.eval.outputs.ui }} | |
| api: ${{ steps.eval.outputs.api }} | |
| desktop: ${{ steps.eval.outputs.desktop }} | |
| integration: ${{ steps.eval.outputs.integration }} | |
| docker: ${{ steps.eval.outputs.docker }} | |
| steps: | |
| - id: eval | |
| env: | |
| PRE_RELEASE: ${{ inputs.pre_release == true }} | |
| DISPATCH: ${{ github.event_name == 'workflow_dispatch' }} | |
| LABEL_ALL: ${{ contains(github.event.pull_request.labels.*.name, 'run-all-tests') }} | |
| LABEL_FE: ${{ contains(github.event.pull_request.labels.*.name, 'run-frontend-tests') }} | |
| LABEL_BE: ${{ contains(github.event.pull_request.labels.*.name, 'run-backend-tests') }} | |
| LABEL_IT: ${{ contains(github.event.pull_request.labels.*.name, 'run-integration-tests') }} | |
| CHG_FRONTEND: ${{ needs.changes.outputs.frontend }} | |
| CHG_BACKEND: ${{ needs.changes.outputs.backend }} | |
| CHG_DESKTOP: ${{ needs.changes.outputs.desktop }} | |
| CHG_DOCKER: ${{ needs.changes.outputs.docker }} | |
| CHG_INFRA: ${{ needs.changes.outputs.infra }} | |
| run: | | |
| # "Run everything" — pre-release builds, manual dispatch, the | |
| # run-all-tests label, or shared toolchain/CI changes. | |
| if [[ "$PRE_RELEASE" == "true" || "$DISPATCH" == "true" || "$LABEL_ALL" == "true" || "$CHG_INFRA" == "true" ]]; then | |
| ALL=true | |
| else | |
| ALL=false | |
| fi | |
| ui=$ALL | |
| api=$ALL | |
| desktop=$ALL | |
| integration=$ALL | |
| docker=$ALL | |
| [[ "$CHG_FRONTEND" == "true" || "$LABEL_FE" == "true" ]] && ui=true | |
| [[ "$CHG_BACKEND" == "true" || "$LABEL_BE" == "true" ]] && api=true | |
| [[ "$CHG_DESKTOP" == "true" ]] && desktop=true | |
| [[ "$CHG_BACKEND" == "true" || "$LABEL_IT" == "true" ]] && integration=true | |
| [[ "$CHG_FRONTEND" == "true" || "$CHG_BACKEND" == "true" || "$CHG_DOCKER" == "true" ]] && docker=true | |
| { | |
| echo "ui=$ui" | |
| echo "api=$api" | |
| echo "desktop=$desktop" | |
| echo "integration=$integration" | |
| echo "docker=$docker" | |
| } >> "$GITHUB_OUTPUT" | |
| lint: | |
| uses: ./.github/workflows/lint.yml | |
| secrets: inherit | |
| type-check: | |
| needs: should-run | |
| uses: ./.github/workflows/type-check.yml | |
| with: | |
| run-ui: ${{ needs.should-run.outputs.ui == 'true' }} | |
| run-api: ${{ needs.should-run.outputs.api == 'true' }} | |
| run-desktop: ${{ needs.should-run.outputs.desktop == 'true' }} | |
| secrets: inherit | |
| docker-build: | |
| needs: should-run | |
| if: needs.should-run.outputs.docker == 'true' | |
| uses: ./.github/workflows/docker-build.yml | |
| frontend-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.ui == 'true' | |
| uses: ./.github/workflows/tests-frontend.yml | |
| secrets: inherit | |
| frontend-tests-coverage: | |
| needs: frontend-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: report-fe | |
| type: unit | |
| backend-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.api == 'true' | |
| uses: ./.github/workflows/tests-backend.yml | |
| secrets: inherit | |
| backend-tests-coverage: | |
| needs: backend-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: report-be | |
| type: unit | |
| integration-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.integration == 'true' | |
| uses: ./.github/workflows/tests-integration.yml | |
| secrets: inherit | |
| permissions: | |
| actions: write | |
| contents: read | |
| checks: write | |
| with: | |
| short_rte_list: ${{ inputs.short_rte_list || true }} | |
| redis_client: ${{ inputs.redis_client || '' }} | |
| debug: ${{ inputs.debug || false }} | |
| integration-tests-coverage: | |
| needs: integration-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: integration-coverage | |
| type: integration | |
| clean: | |
| uses: ./.github/workflows/clean-deployments.yml | |
| if: ${{ always() && github.actor != 'dependabot[bot]' }} | |
| permissions: | |
| actions: write | |
| contents: read | |
| deployments: write | |
| needs: | |
| [ | |
| frontend-tests, | |
| backend-tests, | |
| integration-tests, | |
| ] | |
| # Remove artifacts from github actions | |
| remove-artifacts: | |
| name: Remove artifacts | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| needs: | |
| [ | |
| frontend-tests, | |
| backend-tests, | |
| integration-tests, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7.0.0 | |
| - name: Remove all artifacts | |
| uses: ./.github/actions/remove-artifacts |