Skip to content

feat(i18n): migrate database-analysis page (RI-8276) #7351

feat(i18n): migrate database-analysis page (RI-8276)

feat(i18n): migrate database-analysis page (RI-8276) #7351

Workflow file for this run

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