app.yml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. name: Release App
  2. on:
  3. workflow_dispatch:
  4. release:
  5. types: [published]
  6. jobs:
  7. create-release:
  8. permissions:
  9. contents: write
  10. runs-on: ubuntu-latest
  11. outputs:
  12. release_id: ${{ steps.create-release.outputs.result }}
  13. steps:
  14. - uses: actions/checkout@v3
  15. - name: setup node
  16. uses: actions/setup-node@v3
  17. with:
  18. node-version: 18
  19. - name: get version
  20. run: echo "PACKAGE_VERSION=$(node -p "require('./src-tauri/tauri.conf.json').package.version")" >> $GITHUB_ENV
  21. - name: create release
  22. id: create-release
  23. uses: actions/github-script@v6
  24. with:
  25. script: |
  26. const { data } = await github.rest.repos.getLatestRelease({
  27. owner: context.repo.owner,
  28. repo: context.repo.repo,
  29. })
  30. return data.id
  31. build-tauri:
  32. needs: create-release
  33. permissions:
  34. contents: write
  35. strategy:
  36. fail-fast: false
  37. matrix:
  38. config:
  39. - os: ubuntu-latest
  40. arch: x86_64
  41. rust_target: x86_64-unknown-linux-gnu
  42. - os: macos-latest
  43. arch: aarch64
  44. rust_target: x86_64-apple-darwin,aarch64-apple-darwin
  45. - os: windows-latest
  46. arch: x86_64
  47. rust_target: x86_64-pc-windows-msvc
  48. runs-on: ${{ matrix.config.os }}
  49. steps:
  50. - uses: actions/checkout@v3
  51. - name: setup node
  52. uses: actions/setup-node@v3
  53. with:
  54. node-version: 18
  55. cache: 'yarn'
  56. - name: install Rust stable
  57. uses: dtolnay/rust-toolchain@stable
  58. with:
  59. targets: ${{ matrix.config.rust_target }}
  60. - uses: Swatinem/rust-cache@v2
  61. with:
  62. key: ${{ matrix.config.os }}
  63. - name: install dependencies (ubuntu only)
  64. if: matrix.config.os == 'ubuntu-latest'
  65. run: |
  66. sudo apt-get update
  67. sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
  68. - name: install frontend dependencies
  69. run: yarn install # change this to npm or pnpm depending on which one you use
  70. - uses: tauri-apps/tauri-action@v0
  71. env:
  72. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  73. TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
  74. TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
  75. APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
  76. APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
  77. APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
  78. APPLE_ID: ${{ secrets.APPLE_ID }}
  79. APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
  80. APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
  81. with:
  82. releaseId: ${{ needs.create-release.outputs.release_id }}
  83. args: ${{ matrix.config.os == 'macos-latest' && '--target universal-apple-darwin' || '' }}
  84. publish-release:
  85. permissions:
  86. contents: write
  87. runs-on: ubuntu-latest
  88. needs: [create-release, build-tauri]
  89. steps:
  90. - name: publish release
  91. id: publish-release
  92. uses: actions/github-script@v6
  93. env:
  94. release_id: ${{ needs.create-release.outputs.release_id }}
  95. with:
  96. script: |
  97. github.rest.repos.updateRelease({
  98. owner: context.repo.owner,
  99. repo: context.repo.repo,
  100. release_id: process.env.release_id,
  101. draft: false,
  102. prerelease: false
  103. })