ci.yml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. name: CI
  2. on:
  3. pull_request:
  4. paths:
  5. - "**.go"
  6. - "go.mod"
  7. - "go.sum"
  8. - "**.js"
  9. - "**.mjs"
  10. - "**.cjs"
  11. - "**.ts"
  12. - "**.html"
  13. - "**.css"
  14. - "frontend/package.json"
  15. - "frontend/package-lock.json"
  16. - ".nvmrc"
  17. push:
  18. branches:
  19. - main
  20. paths:
  21. - "**.go"
  22. - "go.mod"
  23. - "go.sum"
  24. - "**.js"
  25. - "**.mjs"
  26. - "**.cjs"
  27. - "**.ts"
  28. - "**.html"
  29. - "**.css"
  30. - "frontend/package.json"
  31. - "frontend/package-lock.json"
  32. - ".nvmrc"
  33. permissions:
  34. contents: read
  35. jobs:
  36. go-test:
  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. - name: Stub web/dist for go:embed
  45. run: mkdir -p web/dist && touch web/dist/.gitkeep
  46. - name: Test
  47. run: |
  48. go list ./... | grep -v '/frontend/node_modules/' > /tmp/go-packages.txt
  49. go test $(cat /tmp/go-packages.txt)
  50. govulncheck:
  51. runs-on: ubuntu-latest
  52. steps:
  53. - uses: actions/checkout@v6
  54. - uses: actions/setup-go@v6
  55. with:
  56. go-version-file: go.mod
  57. cache: true
  58. - name: Stub web/dist for go:embed
  59. run: mkdir -p web/dist && touch web/dist/.gitkeep
  60. - name: Install govulncheck
  61. run: go install golang.org/x/vuln/cmd/govulncheck@latest
  62. - name: Run govulncheck
  63. run: govulncheck ./...
  64. frontend:
  65. runs-on: ubuntu-latest
  66. steps:
  67. - uses: actions/checkout@v6
  68. - uses: actions/setup-node@v6
  69. with:
  70. node-version-file: .nvmrc
  71. cache: npm
  72. cache-dependency-path: frontend/package-lock.json
  73. - name: Install
  74. run: npm ci
  75. working-directory: frontend
  76. - name: Lint
  77. run: npm run lint
  78. working-directory: frontend
  79. - name: Build
  80. run: npm run build
  81. working-directory: frontend
  82. - name: Audit
  83. run: npm audit --audit-level=high
  84. working-directory: frontend