ci.yml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. name: CI
  2. on:
  3. pull_request:
  4. paths:
  5. - "**.go"
  6. - "go.mod"
  7. - "go.sum"
  8. - "frontend/**"
  9. - ".nvmrc"
  10. push:
  11. branches:
  12. - main
  13. paths:
  14. - "**.go"
  15. - "go.mod"
  16. - "go.sum"
  17. - "frontend/**"
  18. - ".nvmrc"
  19. permissions:
  20. contents: read
  21. jobs:
  22. go-test:
  23. runs-on: ubuntu-latest
  24. steps:
  25. - uses: actions/checkout@v6
  26. - uses: actions/setup-go@v6
  27. with:
  28. go-version-file: go.mod
  29. cache: true
  30. - name: Stub web/dist for go:embed
  31. run: mkdir -p web/dist && touch web/dist/.gitkeep
  32. - name: Test
  33. run: |
  34. go list ./... | grep -v '/frontend/node_modules/' > /tmp/go-packages.txt
  35. go test $(cat /tmp/go-packages.txt)
  36. codegen:
  37. runs-on: ubuntu-latest
  38. steps:
  39. - uses: actions/checkout@v6
  40. - uses: actions/setup-go@v6
  41. with:
  42. go-version-file: go.mod
  43. cache: true
  44. - uses: actions/setup-node@v6
  45. with:
  46. node-version-file: .nvmrc
  47. - name: Regenerate schemas, examples and OpenAPI
  48. run: npm run gen
  49. working-directory: frontend
  50. - name: Fail if generated files are stale (run 'npm run gen' and commit)
  51. run: git diff --exit-code -- frontend/src/generated frontend/public/openapi.json
  52. govulncheck:
  53. runs-on: ubuntu-latest
  54. steps:
  55. - uses: actions/checkout@v6
  56. - uses: actions/setup-go@v6
  57. with:
  58. go-version-file: go.mod
  59. cache: true
  60. - name: Stub web/dist for go:embed
  61. run: mkdir -p web/dist && touch web/dist/.gitkeep
  62. - name: Install govulncheck
  63. run: go install golang.org/x/vuln/cmd/govulncheck@latest
  64. - name: Run govulncheck
  65. run: govulncheck ./...
  66. frontend:
  67. runs-on: ubuntu-latest
  68. steps:
  69. - uses: actions/checkout@v6
  70. - uses: actions/setup-node@v6
  71. with:
  72. node-version-file: .nvmrc
  73. cache: npm
  74. cache-dependency-path: frontend/package-lock.json
  75. - name: Install
  76. run: npm ci
  77. working-directory: frontend
  78. - name: Lint
  79. run: npm run lint
  80. working-directory: frontend
  81. - name: Typecheck
  82. run: npm run typecheck
  83. working-directory: frontend
  84. - name: Test
  85. run: npm test
  86. working-directory: frontend
  87. - name: Build
  88. run: npm run build
  89. working-directory: frontend
  90. - name: Audit
  91. run: npm audit --audit-level=high
  92. working-directory: frontend