feat(brand): roll out Meridian brand identity #1521
Workflow file for this run
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: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| jobs: | |
| lint-typecheck: | |
| name: Lint & Typecheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6.0.10 | |
| - uses: actions/setup-node@v7 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm format:check | |
| - run: pnpm lint | |
| - run: pnpm typecheck | |
| # The Vercel serverless functions in api/ live outside the pnpm workspace, | |
| # so turbo doesn't cover them — typecheck them explicitly. | |
| - run: pnpm typecheck:api | |
| - name: Verify apps/api-local build output is flat | |
| run: | | |
| pnpm --filter @meridian/api-local build | |
| test -f apps/api-local/dist/index.js | |
| vercel-build: | |
| name: Verify Vercel Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6.0.10 | |
| - uses: actions/setup-node@v7 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - name: Run the real Vercel build script | |
| run: pnpm exec bash scripts/build-vercel.sh | |
| - name: Assert every workspace package api/v1/* imports was bundled | |
| run: | | |
| for pkg in shared stellar-sdk-helpers api-core; do | |
| if [ ! -f "packages/$pkg/dist/index.js" ]; then | |
| echo "::error::packages/$pkg/dist/index.js was not produced by scripts/build-vercel.sh, but api/v1/* imports @meridian/$pkg. This is the exact failure mode from #398 (ERR_MODULE_NOT_FOUND in production)." | |
| exit 1 | |
| fi | |
| done | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6.0.10 | |
| - uses: actions/setup-node@v7 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm test | |
| - run: pnpm coverage | |
| commitlint: | |
| name: Commit Messages | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - uses: wagoid/commitlint-github-action@v6 | |
| with: | |
| configFile: commitlint.config.mjs | |
| pr-lint: | |
| name: PR Title | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: amannn/action-semantic-pull-request@v6 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| types: | | |
| feat | |
| fix | |
| docs | |
| chore | |
| refactor | |
| test | |
| style | |
| ci | |
| perf | |
| dependency-review: | |
| name: Dependency Review | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/dependency-review-action@v5 | |
| e2e: | |
| name: E2E Tests | |
| runs-on: ubuntu-latest | |
| # Drives the real dev stack against real Stellar testnet RPC (wallet | |
| # signing is mocked, see apps/web/e2e/fixtures.ts), so it exercises | |
| # the real API and Soroban simulation paths end to end. Tests use page.route() | |
| # to stub live-network-dependent data where it would otherwise be flaky on | |
| # testnet RPC hiccups (see #535). Blocking. | |
| # | |
| # STELLAR_NETWORK must be set explicitly: mainnet is now the default | |
| # (packages/shared/src/constants.ts, #738) since the product is live | |
| # there, and this suite's testnet assumptions (testnet contract | |
| # addresses, mocked-wallet fixtures funded on testnet) would otherwise | |
| # silently target mainnet instead. | |
| env: | |
| STELLAR_NETWORK: testnet | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6.0.10 | |
| - uses: actions/setup-node@v7 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| # apps/api-local imports its workspace deps (@meridian/shared etc.) by | |
| # package resolution, which needs their dist/ output built first - the | |
| # dev server doesn't build them itself. Scoped to api-local's own | |
| # dependency graph so this doesn't also try to build contracts/docs. | |
| - run: pnpm exec turbo run build --filter=@meridian/api-local... | |
| - run: pnpm --filter @meridian/web exec playwright install --with-deps chromium | |
| - run: pnpm --filter @meridian/web test:e2e | |
| contracts: | |
| name: Soroban Contract Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| components: clippy, rustfmt | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: packages/contracts | |
| - name: Check formatting | |
| working-directory: packages/contracts | |
| run: cargo fmt --all -- --check | |
| - name: Run clippy | |
| working-directory: packages/contracts | |
| run: cargo clippy --all-targets -- -D warnings | |
| - name: Install cargo-llvm-cov | |
| uses: taiki-e/install-action@cargo-llvm-cov | |
| - name: Install LLVM coverage tools | |
| run: rustup component add llvm-tools-preview | |
| - name: Measure contract coverage | |
| working-directory: packages/contracts | |
| run: >- | |
| cargo llvm-cov | |
| --package meridian-vault | |
| --package meridian-blend-adapter | |
| --package meridian-defindex-adapter | |
| --package adapter-common | |
| --summary-only | |
| --fail-under-lines 97.5 | |
| - name: Build wasm | |
| working-directory: packages/contracts | |
| run: cargo build --target wasm32-unknown-unknown --release |