# designpaca CI — 자체 러너(linux-builder, host 모드)에서 돈다. # host 러너에는 Node 가 없을 수 있으므로 uses: 액션을 쓰지 않고 전부 run: 으로 처리한다. name: ci on: push: branches: [main] pull_request: workflow_dispatch: jobs: build: runs-on: linux-builder steps: - name: checkout env: { CI_TOKEN: "${{ github.token }}" } run: | proto="${GITHUB_SERVER_URL%%://*}"; host="${GITHUB_SERVER_URL#*://}" url="$proto://actions:${CI_TOKEN}@${host%/}/${GITHUB_REPOSITORY}.git" [ -d .git ] || git init -q . git remote remove origin 2>/dev/null || true git remote add origin "$url" git fetch -q --depth 1 origin "$GITHUB_REF" git checkout -q -f FETCH_HEAD git clean -qfdx - name: 환경 확인 run: bash build/ci/verify-node.sh - name: 의존성 설치 run: pnpm install --frozen-lockfile - name: 스킬 문서 검사 run: node build/ci/lint-skill.mjs packages/skill - name: 타입 검사 run: pnpm typecheck - name: 테스트 run: pnpm test - name: 빌드 run: pnpm build - name: 배포물 점검 (npx 경로 검증) run: | node packages/cli/scripts/verify-package.mjs # 실제 사용자가 겪는 경로 그대로 확인한다 — tarball 을 만들어 설치까지 해본다 cd packages/cli tarball="$(npm pack --silent)" tmp="$(mktemp -d)" tar -xzf "$tarball" -C "$tmp" test -f "$tmp/package/dist/skill/SKILL.md" || { echo "tarball 에 스킬이 없다" >&2; exit 1; } node "$tmp/package/dist/index.js" --version node "$tmp/package/dist/index.js" list rm -rf "$tmp" "$tarball" - name: 사이트 빌드 run: pnpm build:site