publish.yml 3.1 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@v1
  14. - name: Git credentials
  15. run: |
  16. git config --global user.name ${{ secrets.PUBLISH_USER_NAME }}
  17. git config --global user.email ${{ secrets.PUBLISH_USER_EMAIL }}
  18. - name: Install Node.js
  19. uses: actions/setup-node@v1
  20. with:
  21. node-version: 16
  22. - if: startsWith(matrix.os, 'ubuntu')
  23. name: Install Python
  24. uses: actions/setup-python@v2
  25. with:
  26. python-version: 3.9
  27. - name: Install npm packages
  28. run: make install
  29. - name: ESLint
  30. run: make lint
  31. - name: Publish Electron
  32. shell: bash
  33. env:
  34. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  35. API_KEY_ID: ${{ secrets.API_KEY_ID }}
  36. API_KEY_ISSUER_ID: ${{ secrets.API_KEY_ISSUER_ID }}
  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. run: |
  42. case "${{ matrix.os }}" in
  43. macos*)
  44. mkdir -p ~/.private_keys
  45. echo '${{ secrets.API_KEY }}' > ~/.private_keys/AuthKey_${{ secrets.API_KEY_ID }}.p8
  46. npx electron-builder --mac --universal --publish always
  47. ;;
  48. ubuntu*)
  49. sudo snap install snapcraft --classic
  50. mkdir -p ~/.private_keys
  51. echo '${{ secrets.SNAPCRAFT_TOKEN }}' > ~/.private_keys/snapcraft_token.txt
  52. snapcraft login --with ~/.private_keys/snapcraft_token.txt
  53. npx electron-builder --linux appimage --x64 --publish always
  54. npx electron-builder --linux snap --x64 --publish always
  55. ;;
  56. windows*)
  57. unset CSC_LINK;
  58. unset CSC_KEY_PASSWORD;
  59. npx electron-builder --win --x64 --arm64 --publish always
  60. ;;
  61. esac
  62. - if: startsWith(matrix.os, 'ubuntu')
  63. name: Publish Python
  64. env:
  65. TWINE_USERNAME: __token__
  66. TWINE_PASSWORD: ${{ secrets.pypi_api_token }}
  67. run: make publish_python
  68. - if: startsWith(matrix.os, 'ubuntu')
  69. name: Publish Web
  70. env:
  71. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  72. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  73. run: make publish_web
  74. - if: startsWith(matrix.os, 'macos')
  75. name: Publish cask
  76. env:
  77. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  78. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  79. run: make publish_cask
  80. - if: startsWith(matrix.os, 'windows')
  81. name: Publish winget
  82. env:
  83. GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
  84. GITHUB_USER: ${{ secrets.PUBLISH_GITHUB_USER }}
  85. run: make publish_winget