main.yml 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. name: Main
  2. on:
  3. push:
  4. branches: [main]
  5. pull_request:
  6. env:
  7. CACHE: true
  8. jobs:
  9. audit:
  10. name: Audit Dependencies
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Git checkout
  14. uses: actions/checkout@v4
  15. - name: Setup Environment
  16. uses: ./.github/actions/setup
  17. with:
  18. cargo-cache-key: cargo-audit
  19. components: audit
  20. - name: cargo-audit
  21. run: pnpm audit
  22. filter:
  23. name: Filter Workspace
  24. runs-on: ubuntu-latest
  25. needs: audit
  26. outputs:
  27. members: ${{ steps.filter.outputs.members }}
  28. steps:
  29. - name: Git Checkout
  30. uses: actions/checkout@v4
  31. - name: Setup Environment
  32. uses: ./.github/actions/setup
  33. with:
  34. cargo-cache-key: cargo-filter-workspace
  35. - name: Filter
  36. id: filter
  37. run: pnpm tsx ./scripts/setup/members.mts
  38. process:
  39. name: Crate
  40. needs: filter
  41. runs-on: ubuntu-latest
  42. strategy:
  43. matrix:
  44. member: ${{ fromJson(needs.filter.outputs.members) }}
  45. steps:
  46. - name: Git Checkout
  47. uses: actions/checkout@v4
  48. - name: Setup Environment
  49. uses: ./.github/actions/setup
  50. with:
  51. cargo-cache-key: cargo-${{ matrix.member }}
  52. toolchain: build, format, lint, test
  53. components: hack
  54. solana: true
  55. - name: fmt
  56. run: pnpm format ${{ matrix.member }}
  57. - name: clippy
  58. run: pnpm clippy ${{ matrix.member }}
  59. - name: cargo-doc
  60. run: pnpm doc ${{ matrix.member }}
  61. - name: cargo-hack
  62. run: pnpm hack ${{ matrix.member }}
  63. - name: build-sbf
  64. run: pnpm build-sbf ${{ matrix.member }}
  65. - name: test
  66. run: pnpm test ${{ matrix.member }}