build-windows.yml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. name: Build Windows Executable
  2. on:
  3. push:
  4. tags:
  5. - 'v*'
  6. workflow_dispatch:
  7. inputs:
  8. version:
  9. description: 'Version tag'
  10. required: false
  11. default: 'latest'
  12. jobs:
  13. build-windows:
  14. runs-on: windows-latest
  15. steps:
  16. - name: Checkout code
  17. uses: actions/checkout@v4
  18. - name: Set up Python
  19. uses: actions/setup-python@v5
  20. with:
  21. python-version: '3.11'
  22. - name: Install dependencies
  23. run: |
  24. python -m pip install --upgrade pip
  25. pip install -r requirements.txt
  26. pip install pyinstaller
  27. - name: Create data directory structure
  28. shell: pwsh
  29. run: |
  30. New-Item -ItemType Directory -Path "dist\data" -Force | Out-Null
  31. Copy-Item data\a.csv dist\data\
  32. Copy-Item data\b.csv dist\data\
  33. - name: Build GUI executable
  34. run: |
  35. pyinstaller --clean --noconfirm gui.spec
  36. - name: Build CLI executable
  37. run: |
  38. pyinstaller --clean --noconfirm main.spec
  39. - name: Create release package
  40. shell: pwsh
  41. run: |
  42. New-Item -ItemType Directory -Path "release" -Force | Out-Null
  43. New-Item -ItemType Directory -Path "release\data" -Force | Out-Null
  44. Copy-Item dist\searchdomain_gui.exe release\
  45. Copy-Item dist\searchdomain_cli.exe release\
  46. Copy-Item data\a.csv release\data\
  47. Copy-Item data\b.csv release\data\
  48. - name: Upload artifacts
  49. uses: actions/upload-artifact@v4
  50. with:
  51. name: windows-executables
  52. path: release/
  53. - name: Create Release
  54. if: startsWith(github.ref, 'refs/tags/')
  55. uses: softprops/action-gh-release@v1
  56. with:
  57. files: release/*
  58. draft: false
  59. prerelease: false
  60. env:
  61. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}