diff --git a/packages/junior/src/cli/init.ts b/packages/junior/src/cli/init.ts index 8aefbf4c..cd11cd20 100644 --- a/packages/junior/src/cli/init.ts +++ b/packages/junior/src/cli/init.ts @@ -56,6 +56,37 @@ function writeVercelJson(targetDir: string): void { ); } +function writeGitHubWorkflow(targetDir: string): void { + const workflowDir = path.join(targetDir, ".github", "workflows"); + fs.mkdirSync(workflowDir, { recursive: true }); + fs.writeFileSync( + path.join(workflowDir, "ci.yml"), + `name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v6 + with: + version: 10 + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm check + - run: pnpm build +`, + ); +} + export async function runInit( dir: string, log: (line: string) => void = console.log, @@ -158,6 +189,7 @@ SENTRY_ORG_SLUG= writeNitroConfig(target); writeViteConfig(target); writeVercelJson(target); + writeGitHubWorkflow(target); log(`Created ${name} at ${target}`); log(""); diff --git a/packages/junior/tests/unit/cli/init-cli.test.ts b/packages/junior/tests/unit/cli/init-cli.test.ts index 40f2601a..480519d6 100644 --- a/packages/junior/tests/unit/cli/init-cli.test.ts +++ b/packages/junior/tests/unit/cli/init-cli.test.ts @@ -34,6 +34,17 @@ describe("init cli", () => { expect(fs.existsSync(path.join(target, "app", "DESCRIPTION.md"))).toBe( true, ); + expect( + fs.existsSync(path.join(target, ".github", "workflows", "ci.yml")), + ).toBe(true); + + const workflow = fs.readFileSync( + path.join(target, ".github", "workflows", "ci.yml"), + "utf8", + ); + expect(workflow).toContain("pnpm check"); + expect(workflow).toContain("pnpm build"); + expect(workflow).toContain("pnpm install --frozen-lockfile"); const vercelConfig = JSON.parse( fs.readFileSync(path.join(target, "vercel.json"), "utf8"),