windows-installer.yml 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. name: Windows Installer
  2. # Build the Windows installer .exe.
  3. #
  4. # Triggers:
  5. # - Tag push matching v* (release builds, uploaded as a release asset)
  6. # - Manual dispatch (for testing the build pipeline)
  7. #
  8. # The installer is unsigned until SignPath OSS approval lands. Once it
  9. # does, add the SignPath GitHub Action between the ISCC step and the
  10. # upload step.
  11. on:
  12. push:
  13. tags:
  14. - 'v*'
  15. workflow_dispatch:
  16. jobs:
  17. build:
  18. runs-on: windows-latest
  19. timeout-minutes: 30
  20. steps:
  21. - name: Checkout
  22. uses: actions/checkout@v4
  23. - name: Setup Python
  24. uses: actions/setup-python@v5
  25. with:
  26. python-version: '3.13'
  27. - name: Setup Node.js
  28. uses: actions/setup-node@v4
  29. with:
  30. node-version: '22'
  31. # Inno Setup 6.x is pre-installed on windows-latest runners (under
  32. # C:\Program Files (x86)\Inno Setup 6\). No install step needed.
  33. - name: Stage installer artifacts
  34. working-directory: installers/windows
  35. run: python build.py
  36. shell: pwsh
  37. - name: Compile installer (ISCC)
  38. working-directory: installers/windows
  39. run: |
  40. & "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" bambuddy.iss
  41. shell: pwsh
  42. - name: Upload installer artifact
  43. uses: actions/upload-artifact@v4
  44. with:
  45. name: bambuddy-windows-installer
  46. path: installers/windows/build/output/*.exe
  47. if-no-files-found: error
  48. - name: Attach installer to release
  49. if: startsWith(github.ref, 'refs/tags/v')
  50. uses: softprops/action-gh-release@v2
  51. with:
  52. files: installers/windows/build/output/*.exe
  53. fail_on_unmatched_files: true