build-windows.yml 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. run: |
  29. if not exist "dist\data" mkdir dist\data
  30. copy data\a.csv dist\data\
  31. copy data\b.csv dist\data\
  32. - name: Build GUI executable
  33. run: |
  34. pyinstaller --clean --noconfirm gui.spec
  35. - name: Build CLI executable
  36. run: |
  37. pyinstaller --clean --noconfirm main.spec
  38. - name: Create release package
  39. run: |
  40. if not exist "release" mkdir release
  41. copy dist\searchdomain_gui.exe release\
  42. copy dist\searchdomain_cli.exe release\
  43. copy data\a.csv release\data\
  44. copy data\b.csv release\data
  45. - name: Upload artifacts
  46. uses: actions/upload-artifact@v4
  47. with:
  48. name: windows-executables
  49. path: release/
  50. - name: Create Release
  51. if: startsWith(github.ref, 'refs/tags/')
  52. uses: softprops/action-gh-release@v1
  53. with:
  54. files: release/*
  55. draft: false
  56. prerelease: false
  57. env:
  58. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}