name: CI on: push: branches: [main] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - name: Lint run: pnpm lint typecheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - name: Generate Prisma client run: pnpm --filter @mcpctl/db exec prisma generate - name: Typecheck run: pnpm typecheck test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - name: Generate Prisma client run: pnpm --filter @mcpctl/db exec prisma generate - name: Run tests run: pnpm test:run build: runs-on: ubuntu-latest needs: [lint, typecheck, test] steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - name: Generate Prisma client run: pnpm --filter @mcpctl/db exec prisma generate - name: Build all packages run: pnpm build package: runs-on: ubuntu-latest needs: [build] if: github.ref == 'refs/heads/main' && github.event_name == 'push' steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - name: Generate Prisma client run: pnpm --filter @mcpctl/db exec prisma generate - name: Build TypeScript run: pnpm build - name: Install bun uses: oven-sh/setup-bun@v2 - name: Install nfpm run: | curl -sL -o /tmp/nfpm.tar.gz "https://github.com/goreleaser/nfpm/releases/download/v2.45.0/nfpm_2.45.0_Linux_x86_64.tar.gz" tar xzf /tmp/nfpm.tar.gz -C /usr/local/bin nfpm - name: Bundle standalone binary run: bun build src/cli/src/index.ts --compile --outfile dist/mcpctl - name: Build RPM run: nfpm pkg --packager rpm --target dist/ - name: Publish to Gitea packages env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | RPM_FILE=$(ls dist/mcpctl-*.rpm | head -1) curl --fail -X PUT \ -H "Authorization: token ${GITEA_TOKEN}" \ --upload-file "$RPM_FILE" \ "${{ github.server_url }}/api/packages/${{ github.repository_owner }}/rpm/upload"