diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..ec15102c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,117 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + contract-check: + name: Clarinet Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Clarinet + uses: hirosystems/clarinet-actions/setup@v1 + + - name: Validate contracts + run: clarinet check + + contract-tests: + name: Contract Tests + runs-on: ubuntu-latest + needs: contract-check + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Run contract tests + run: npm test + + frontend-lint: + name: Frontend Lint + runs-on: ubuntu-latest + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: frontend/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + frontend-test: + name: Frontend Tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: frontend/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm test + + frontend-build: + name: Frontend Build + runs-on: ubuntu-latest + needs: [frontend-lint, frontend-test] + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: frontend/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: frontend-dist + path: frontend/dist + retention-days: 7 diff --git a/vitest.config.js b/vitest.config.js index c6a85065..ed1b59fc 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -21,6 +21,7 @@ import { vitestSetupFilePath, getClarinetVitestsArgv } from "@hirosystems/clarin export default defineConfig({ test: { + include: ["tests/**/*.test.ts"], environment: "clarinet", // use vitest-environment-clarinet pool: "forks", poolOptions: {