|
63 | 63 | run_playwright_critical: ${{ steps.detect.outputs.run_playwright_critical }} |
64 | 64 | run_playwright_visual: ${{ steps.detect.outputs.run_playwright_visual }} |
65 | 65 | run_preflight: ${{ steps.detect.outputs.run_preflight }} |
| 66 | + run_preflight_typecheck: ${{ steps.detect.outputs.run_preflight_typecheck }} |
66 | 67 | run_ui_p0: ${{ steps.detect.outputs.run_ui_p0 }} |
67 | 68 | run_web_workspace_tests: ${{ steps.detect.outputs.run_web_workspace_tests }} |
68 | 69 | run_windows_tools_pack_payload_tests: ${{ steps.detect.outputs.run_windows_tools_pack_payload_tests }} |
@@ -136,21 +137,31 @@ jobs: |
136 | 137 | timeout-minutes: 10 |
137 | 138 | env: |
138 | 139 | ACTIONLINT_VERSION: 1.7.12 |
| 140 | + SHELLCHECK_VERSION: 0.11.0 |
139 | 141 |
|
140 | 142 | steps: |
141 | 143 | - name: Checkout |
142 | 144 | uses: actions/checkout@v6.0.2 |
143 | 145 |
|
144 | | - - name: Install actionlint |
| 146 | + - name: Install actionlint and ShellCheck |
145 | 147 | run: | |
146 | 148 | case "$(uname -m)" in |
147 | | - x86_64) actionlint_arch=amd64 ;; |
148 | | - aarch64|arm64) actionlint_arch=arm64 ;; |
| 149 | + x86_64) |
| 150 | + actionlint_arch=amd64 |
| 151 | + shellcheck_arch=x86_64 |
| 152 | + ;; |
| 153 | + aarch64|arm64) |
| 154 | + actionlint_arch=arm64 |
| 155 | + shellcheck_arch=aarch64 |
| 156 | + ;; |
149 | 157 | *) echo "Unsupported actionlint architecture: $(uname -m)" >&2; exit 1 ;; |
150 | 158 | esac |
151 | 159 | curl -fsSL "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_${actionlint_arch}.tar.gz" \ |
152 | 160 | | tar -xz actionlint |
| 161 | + curl -fsSL "https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VERSION}/shellcheck-v${SHELLCHECK_VERSION}.linux.${shellcheck_arch}.tar.gz" \ |
| 162 | + | tar -xz --strip-components=1 "shellcheck-v${SHELLCHECK_VERSION}/shellcheck" |
153 | 163 | sudo install -m 0755 actionlint /usr/local/bin/actionlint |
| 164 | + sudo install -m 0755 shellcheck /usr/local/bin/shellcheck |
154 | 165 |
|
155 | 166 | - name: Check workflow files |
156 | 167 | run: actionlint -color |
@@ -245,12 +256,14 @@ jobs: |
245 | 256 | # If postinstall grows a targeted app type-generation phase covering these |
246 | 257 | # three exports without broad app builds, this CI prebuild can be removed. |
247 | 258 | - name: Prebuild workspace type declarations |
| 259 | + if: ${{ needs.scopes.outputs.run_preflight_typecheck == 'true' }} |
248 | 260 | run: | |
249 | 261 | pnpm --filter @open-design/daemon build |
250 | 262 | pnpm --filter @open-design/desktop build |
251 | 263 | pnpm --filter @open-design/web build:sidecar |
252 | 264 |
|
253 | 265 | - name: Typecheck workspaces |
| 266 | + if: ${{ needs.scopes.outputs.run_preflight_typecheck == 'true' }} |
254 | 267 | run: | |
255 | 268 | pnpm -r --filter '!open-design' --filter '!@open-design/landing-page' --workspace-concurrency="${OPEN_DESIGN_WORKSPACE_CONCURRENCY:-1}" --if-present run typecheck |
256 | 269 | pnpm exec tsc -p scripts/tsconfig.json --noEmit |
@@ -291,7 +304,13 @@ jobs: |
291 | 304 | pnpm --filter @open-design/tools-dev test |
292 | 305 | fi |
293 | 306 | if [ "${{ needs.scopes.outputs.tools_pack_tests_required }}" = "true" ]; then |
| 307 | + pnpm --filter @open-design/desktop build |
| 308 | + pnpm --filter @open-design/desktop test |
| 309 | + pnpm --filter @open-design/packaged test |
294 | 310 | pnpm --filter @open-design/tools-pack test |
| 311 | + if [ "${{ needs.scopes.outputs.run_e2e_vitest }}" != "true" ]; then |
| 312 | + pnpm --filter @open-design/e2e test tests/packaged-launcher-update-loop.test.ts |
| 313 | + fi |
295 | 314 | fi |
296 | 315 |
|
297 | 316 | - name: Probe watcher environment |
@@ -723,8 +742,11 @@ jobs: |
723 | 742 | marker="<!-- merge-queue-needs-validation -->" |
724 | 743 | { |
725 | 744 | printf '%s\n' "$marker" |
| 745 | + # Markdown code spans are intentional literal text. |
| 746 | + # shellcheck disable=SC2016 |
726 | 747 | printf 'Ejected from the merge queue: this PR still carries the `needs-validation` label.\n\n' |
727 | 748 | printf 'The merge queue gate ([run %s](%s/%s/actions/runs/%s)) blocked the queued group because of the label. That failure runs on the queue'"'"'s transient ref, so it never appears in this PR'"'"'s own checks — they stay green, and this notice is the only visible trace on the PR.\n\n' "$RUN_ID" "$GITHUB_SERVER_URL" "$REPO" "$RUN_ID" |
| 749 | + # shellcheck disable=SC2016 |
728 | 750 | printf 'To land this PR: complete the QA pass the label is tracking, remove the `needs-validation` label, then add the PR back to the merge queue.\n' |
729 | 751 | } > "$handoff_dir/body.md" |
730 | 752 | jq -n \ |
|
0 commit comments