2
0

publish.yml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 apt-get install rpm --yes
  52. npx electron-builder --linux deb rpm --x64 --arm64 --publish always
  53. npx electron-builder --linux appimage --x64 --publish always
  54. sudo snap install snapcraft --classic
  55. npx electron-builder --linux snap --x64 --publish always
  56. ;;
  57. windows*)
  58. unset CSC_LINK;
  59. unset CSC_KEY_PASSWORD;
  60. npx electron-builder --win --x64 --arm64 --publish always
  61. ;;
  62. esac
  63. - if: startsWith(matrix.os, 'ubuntu')
  64. name: Publish Python
  65. env:
  66. TWINE_USERNAME: __token__
  67. TWINE_PASSWORD: ${{ secrets.pypi_api_token }}
  68. run: npm run publish python
  69. - if: startsWith(matrix.os, 'ubuntu')
  70. name: Publish Web
  71. env:
  72. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  73. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  74. run: git push origin HEAD:release --force
  75. - if: false # startsWith(matrix.os, 'macos')
  76. name: Publish cask
  77. env:
  78. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  79. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  80. run: npm run publish cask
  81. - if: startsWith(matrix.os, 'windows')
  82. name: Publish winget
  83. env:
  84. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  85. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  86. WINGET_TOKEN: ${{ secrets.WINGET_TOKEN }}
  87. run: npm run publish winget