name: Reusable CI on: workflow_call: inputs: node_major: description: "Node 主版本(例如 22)" required: false type: string default: "22" yarn_version: description: "Yarn 版本(例如 stable 或 1.22.22)" required: false type: string default: "stable" run_lint: description: "是否执行 yarn lint" required: false type: boolean default: true run_tsc: description: "是否执行 yarn tsc --noEmit" required: false type: boolean default: true jobs: ci: runs-on: ubuntu-latest env: NODE_MAJOR: ${{ inputs.node_major }} YARN_VERSION: ${{ inputs.yarn_version }} steps: - name: Prepare workspace (checkout + node/yarn) run: | set -euo pipefail chmod +x .gitea/scripts/prepare-workspace.sh ./.gitea/scripts/prepare-workspace.sh \ "${{ github.server_url }}/${{ github.repository }}.git" \ "${{ github.sha }}" - name: Install dependencies run: yarn install --frozen-lockfile - name: Lint if: ${{ inputs.run_lint }} run: yarn lint - name: TypeScript check if: ${{ inputs.run_tsc }} run: yarn tsc --noEmit