ci.yml 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. - "**.vue"
  13. - "**.html"
  14. - "**.css"
  15. - "frontend/package.json"
  16. - "frontend/package-lock.json"
  17. - ".nvmrc"
  18. push:
  19. branches:
  20. - main
  21. paths:
  22. - "**.go"
  23. - "go.mod"
  24. - "go.sum"
  25. - "**.js"
  26. - "**.mjs"
  27. - "**.cjs"
  28. - "**.ts"
  29. - "**.vue"
  30. - "**.html"
  31. - "**.css"
  32. - "frontend/package.json"
  33. - "frontend/package-lock.json"
  34. - ".nvmrc"
  35. permissions:
  36. contents: read
  37. jobs:
  38. go-test:
  39. runs-on: ubuntu-latest
  40. steps:
  41. - uses: actions/checkout@v6
  42. - uses: actions/setup-go@v6
  43. with:
  44. go-version-file: go.mod
  45. cache: true
  46. - name: Stub web/dist for go:embed
  47. run: mkdir -p web/dist && touch web/dist/.gitkeep
  48. - name: Test
  49. run: |
  50. go list ./... | grep -v '/frontend/node_modules/' > /tmp/go-packages.txt
  51. go test $(cat /tmp/go-packages.txt)
  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@v5
  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: Build
  82. run: npm run build
  83. working-directory: frontend
  84. - name: Audit
  85. run: npm audit --audit-level=high
  86. working-directory: frontend