feat: release StackBuild 0.3.0 #51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [stackbuild] | |
| pull_request: | |
| schedule: | |
| - cron: '17 2 * * 1' | |
| jobs: | |
| quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - run: npm ci | |
| - run: npm run typecheck | |
| - run: npm run lint | |
| - run: npm test | |
| - run: npm run build | |
| generated-projects: | |
| needs: quality | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| frontend: [vite, next] | |
| backend: [go, nest] | |
| package_manager: [npm, pnpm, yarn, bun] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: stable | |
| cache: false | |
| - uses: pnpm/action-setup@v4 | |
| if: matrix.package_manager == 'pnpm' | |
| with: | |
| version: 10 | |
| - uses: oven-sh/setup-bun@v2 | |
| if: matrix.package_manager == 'bun' | |
| with: | |
| bun-version: latest | |
| - run: npm ci | |
| - run: npm run build | |
| - name: Generate a non-interactive project | |
| run: >- | |
| node dist/cli.js smoke-${{ matrix.frontend }}-${{ matrix.backend }}-${{ matrix.package_manager }} | |
| --preset customer-api --frontend ${{ matrix.frontend }} --backend ${{ matrix.backend }} | |
| --go-module example.com/stackbuild/api --ui css --database none --cache none | |
| --package-manager ${{ matrix.package_manager }} --skip-install --no-git --docker | |
| - name: Validate Docker Compose | |
| working-directory: smoke-${{ matrix.frontend }}-${{ matrix.backend }}-${{ matrix.package_manager }} | |
| run: docker compose config --quiet | |
| - name: Install generated project | |
| working-directory: smoke-${{ matrix.frontend }}-${{ matrix.backend }}-${{ matrix.package_manager }} | |
| run: | | |
| if [ '${{ matrix.package_manager }}' = npm ]; then npm install; fi | |
| if [ '${{ matrix.package_manager }}' = pnpm ]; then pnpm install; fi | |
| if [ '${{ matrix.package_manager }}' = yarn ]; then corepack enable && yarn install --ignore-engines; fi | |
| if [ '${{ matrix.package_manager }}' = bun ]; then bun install; fi | |
| - name: Build generated project | |
| working-directory: smoke-${{ matrix.frontend }}-${{ matrix.backend }}-${{ matrix.package_manager }} | |
| run: | | |
| if [ '${{ matrix.package_manager }}' = npm ]; then npm run build; fi | |
| if [ '${{ matrix.package_manager }}' = pnpm ]; then pnpm build; fi | |
| if [ '${{ matrix.package_manager }}' = yarn ]; then yarn build; fi | |
| if [ '${{ matrix.package_manager }}' = bun ]; then bun run build; fi | |
| generated-services: | |
| needs: quality | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package_manager: [npm, pnpm, yarn, bun] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - uses: pnpm/action-setup@v4 | |
| if: matrix.package_manager == 'pnpm' | |
| with: | |
| version: 10 | |
| - uses: oven-sh/setup-bun@v2 | |
| if: matrix.package_manager == 'bun' | |
| with: | |
| bun-version: latest | |
| - run: npm ci | |
| - run: npm run build | |
| - name: Generate Nest, PostgreSQL, and Redis project | |
| run: >- | |
| node dist/cli.js services-${{ matrix.package_manager }} | |
| --template customer-api --frontend vite --backend nest --ui css | |
| --database postgres --cache redis --package-manager ${{ matrix.package_manager }} | |
| --skip-install --no-git --docker | |
| - name: Validate service compose configuration | |
| working-directory: services-${{ matrix.package_manager }} | |
| run: docker compose config --quiet | |
| - name: Install generated project | |
| working-directory: services-${{ matrix.package_manager }} | |
| run: | | |
| if [ '${{ matrix.package_manager }}' = npm ]; then npm install; fi | |
| if [ '${{ matrix.package_manager }}' = pnpm ]; then pnpm install; fi | |
| if [ '${{ matrix.package_manager }}' = yarn ]; then corepack enable && yarn install --ignore-engines; fi | |
| if [ '${{ matrix.package_manager }}' = bun ]; then bun install; fi | |
| - name: Generate Prisma client and build API | |
| working-directory: services-${{ matrix.package_manager }} | |
| run: | | |
| if [ '${{ matrix.package_manager }}' = npm ]; then npm run prisma:generate -w @stackbuild/api && npm run build -w @stackbuild/api; fi | |
| if [ '${{ matrix.package_manager }}' = pnpm ]; then pnpm --filter @stackbuild/api prisma:generate && pnpm --filter @stackbuild/api build; fi | |
| if [ '${{ matrix.package_manager }}' = yarn ]; then yarn workspace @stackbuild/api prisma:generate && yarn workspace @stackbuild/api build; fi | |
| if [ '${{ matrix.package_manager }}' = bun ]; then bun --cwd apps/api run prisma:generate && bun --cwd apps/api run build; fi |