name: Lint Test Build on: workflow_call: inputs: node_version: required: true type: string secrets: CODECOV_TOKEN: required: true NX_CLOUD_ACCESS_TOKEN_READONLY: required: true jobs: lint_test_build: name: Lint, Test and Build runs-on: depot-ubuntu-22.04-16 environment: ${{ github.ref_protected == 'true' && 'Protected' || null }} steps: - name: Checkout Repository uses: actions/checkout@v4 with: fetch-depth: 0 filter: tree:0 - name: Fetch main branch if: ${{ github.ref != 'refs/heads/main' }} run: git fetch origin main:main - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - name: Set up pnpm uses: pnpm/action-setup@v4 with: run_install: false - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: ${{ inputs.node_version }} cache: "pnpm" - name: Set up Docker uses: docker/setup-docker-action@v4 with: version: v28.3.2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: version: v0.28.0 - name: Set up Docker Compose uses: docker/setup-compose-action@v1 with: version: v2.38.2 - name: Install dependencies run: pnpm install --frozen-lockfile - name: Install Cypress binary run: pnpm cypress install working-directory: apps/login - name: Set SHAs for nx affected commands uses: nrwl/nx-set-shas@v4 - name: Lint, Test and Build env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} run: pnpm nx affected --nxBail --targets lint test build --exclude @zitadel/docs - name: Suggest Pipeline Fix By Nx Cloud AI if: failure() || cancelled() env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} run: pnpm nx fix-ci - name: Publish API Unit Test Coverage uses: codecov/codecov-action@v4.3.0 with: file: profile.api.test-unit.cov name: api-test-unit flags: api-test-unit token: ${{ secrets.CODECOV_TOKEN }} - name: Publish API Integration Test Coverage uses: codecov/codecov-action@v4.3.0 with: file: profile.api.test-integration.cov name: api-test-integration flags: api-test-integration token: ${{ secrets.CODECOV_TOKEN }} - name: Upload API Integration Test Race Logs if: failure() || cancelled() uses: actions/upload-artifact@v4 with: name: api-integration-test-race-logs path: | .artifacts/api-test-integration/race.log.* - name: Upload Functional UI Test Artifacts uses: actions/upload-artifact@v4 if: failure() || cancelled() with: name: functional-ui-tests path: | tests/functional-ui/cypress/screenshots tests/functional-ui/cypress/videos tests/functional-ui/cypress/results