Skip to content

[ci] CI/CD Pipeline with GitHub Actions #3

@josueazc

Description

@josueazc

DESCRIPTION

There is no automated CI/CD pipeline. Every PR is currently merged without automated lint, type-check, or build verification. As external contributors start landing PRs, broken code can reach main undetected. This task adds a GitHub Actions workflow that runs on every PR and push to main across the full monorepo (frontend, backend, and Rust contracts).

GOAL

Every PR triggers an automated workflow that lints, type-checks, and builds all apps. Failing checks block merges, preventing broken code from reaching main and giving external contributors fast feedback.

REQUIREMENTS

  • .github/workflows/ci.yml triggered on push to main and pull_request to main
  • Jobs: lint (ESLint), typecheck (tsc --noEmit), build (Next.js + NestJS)
  • Rust job: cargo check + cargo test inside contracts/velar-bond/
  • Node 22 required (Supabase client fails on Node 20 — documented in README)
  • Cache node_modules (via actions/setup-node cache) and the cargo registry between runs
  • Workflow status badge added to the README

ACCEPTANCE CRITERIA

  • Opening a PR triggers the CI workflow
  • A PR with a TypeScript error fails the typecheck job
  • A PR with a Rust error fails the cargo check job
  • CI passes on a clean checkout of main
  • README shows the workflow status badge
  • Work follows Velar monorepo structure
  • Can be reviewed by the team via a clean PR with description

NOTES

Relevant files: .github/workflows/ (new), package.json (lint/build scripts), contracts/velar-bond/Cargo.toml. Use actions/setup-node@v4 with node-version: 22 and actions-rs/toolchain for Rust. Good starting point: GitHub's starter workflow for Node.js monorepos.


Difficulty: Intermediate
Priority: High

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official CampaignenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions