publish.yml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. name: Publish
  2. on:
  3. push:
  4. tags: [ 'v**' ]
  5. jobs:
  6. publish:
  7. runs-on: ${{ matrix.os }}
  8. strategy:
  9. matrix:
  10. os: [ macos-latest, ubuntu-latest, windows-latest ]
  11. steps:
  12. - name: Check out Git repository
  13. uses: actions/checkout@v4
  14. - name: Git credentials
  15. run: |
  16. git config --global user.name ${{ secrets.PUBLISH_GITHUB_USER_NAME }}
  17. git config --global user.email ${{ secrets.PUBLISH_GITHUB_USER_EMAIL }}
  18. - name: Install Node.js
  19. uses: actions/setup-node@v4
  20. with:
  21. node-version: latest
  22. - name: Install Python
  23. uses: actions/setup-python@v5
  24. with:
  25. python-version: 3.x
  26. - name: Install Packages
  27. run: npm run install
  28. - name: Validate
  29. run: npm run validate
  30. - name: Publish Electron
  31. shell: bash
  32. env:
  33. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  34. APPLE_API_KEY: ~/.private_keys/AuthKey_${{ secrets.APPLE_API_KEY_ID }}.p8
  35. APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
  36. APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
  37. CSC_LINK: ${{ secrets.CSC_LINK }}
  38. CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
  39. WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
  40. WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
  41. SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
  42. run: |
  43. npx electron-builder install-app-deps
  44. case "${{ matrix.os }}" in
  45. macos*)
  46. mkdir -p ~/.private_keys
  47. echo '${{ secrets.APPLE_API_KEY }}' > ~/.private_keys/AuthKey_${{ secrets.APPLE_API_KEY_ID }}.p8
  48. npx electron-builder --mac --universal --publish always
  49. ;;
  50. ubuntu*)
  51. sudo snap install snapcraft --classic
  52. npx electron-builder --linux appimage --x64 --publish always
  53. npx electron-builder --linux snap --x64 --publish always
  54. ;;
  55. windows*)
  56. unset CSC_LINK;
  57. unset CSC_KEY_PASSWORD;
  58. npx electron-builder --win --x64 --arm64 --publish always
  59. ;;
  60. esac
  61. - if: startsWith(matrix.os, 'ubuntu')
  62. name: Publish Python
  63. env:
  64. TWINE_USERNAME: __token__
  65. TWINE_PASSWORD: ${{ secrets.pypi_api_token }}
  66. run: npm run publish python
  67. - if: startsWith(matrix.os, 'ubuntu')
  68. name: Publish Web
  69. env:
  70. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  71. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  72. run: git push origin HEAD:release --force
  73. - if: false # startsWith(matrix.os, 'macos')
  74. name: Publish cask
  75. env:
  76. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  77. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  78. run: npm run publish cask
  79. - if: startsWith(matrix.os, 'windows')
  80. name: Publish winget
  81. env:
  82. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  83. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  84. WINGET_TOKEN: ${{ secrets.WINGET_TOKEN }}
  85. run: npm run publish winget