test.yml 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. name: Test
  2. on:
  3. push:
  4. pull_request:
  5. types: [opened, synchronize, reopened]
  6. jobs:
  7. check-assets:
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: Restore Geodat Cache
  11. uses: actions/cache/restore@v5
  12. with:
  13. path: resources
  14. key: xray-geodat-
  15. - name: Check Assets Existence
  16. id: check-assets
  17. run: |
  18. [ -d 'resources' ] || mkdir resources
  19. LIST=('geoip.dat' 'geosite.dat')
  20. for FILE_NAME in "${LIST[@]}"
  21. do
  22. echo -e "Checking ${FILE_NAME}..."
  23. if [ -s "./resources/${FILE_NAME}" ]; then
  24. echo -e "${FILE_NAME} exists."
  25. else
  26. echo -e "${FILE_NAME} does not exist."
  27. echo "missing=true" >> $GITHUB_OUTPUT
  28. break
  29. fi
  30. done
  31. - name: Sleep for 90 seconds if Assets Missing
  32. if: steps.check-assets.outputs.missing == 'true'
  33. run: sleep 90
  34. check-proto:
  35. runs-on: ubuntu-latest
  36. steps:
  37. - name: Checkout codebase
  38. uses: actions/checkout@v6
  39. - name: Check Proto Version Header
  40. run: |
  41. head -n 4 core/config.pb.go > ref.txt
  42. find . -name "*.pb.go" ! -name "*_grpc.pb.go" -print0 | while IFS= read -r -d '' file; do
  43. if ! cmp -s ref.txt <(head -n 4 "$file"); then
  44. echo "Error: Header mismatch in $file"
  45. head -n 4 "$file"
  46. exit 1
  47. fi
  48. done
  49. test:
  50. needs: check-assets
  51. permissions:
  52. contents: read
  53. runs-on: ${{ matrix.os }}
  54. strategy:
  55. fail-fast: false
  56. matrix:
  57. os: [windows-latest, ubuntu-latest, macos-latest]
  58. steps:
  59. - name: Checkout codebase
  60. uses: actions/checkout@v6
  61. - name: Set up Go
  62. uses: actions/setup-go@v6
  63. with:
  64. go-version-file: go.mod
  65. check-latest: true
  66. - name: Restore Geodat Cache
  67. uses: actions/cache/restore@v5
  68. with:
  69. path: resources
  70. key: xray-geodat-
  71. enableCrossOsArchive: true
  72. - name: Test
  73. run: go test -timeout 1h -v ./...