1+ name : ' publish'
2+
3+ on : pull_request
4+
5+ jobs :
6+ create-release :
7+ permissions :
8+ contents : write
9+ runs-on : ubuntu-20.04
10+ outputs :
11+ release_id : ${{ steps.create-release.outputs.result }}
12+
13+ steps :
14+ - uses : actions/checkout@v3
15+ - name : setup node
16+ uses : actions/setup-node@v3
17+ with :
18+ node-version : lts/*
19+ - name : create release
20+ id : create-release
21+ uses : actions/github-script@v6
22+ with :
23+ script : |
24+ const { data } = await github.rest.repos.createRelease({
25+ owner: context.repo.owner,
26+ repo: context.repo.repo,
27+ tag_name: `app-v${process.env.PACKAGE_VERSION}`,
28+ name: `Desktop App v${process.env.PACKAGE_VERSION}`,
29+ body: 'Take a look at the assets to download and install this app.',
30+ draft: true,
31+ prerelease: false
32+ })
33+ return data.id
34+
35+ build-tauri :
36+ needs : create-release
37+ permissions :
38+ contents : write
39+ strategy :
40+ fail-fast : false
41+ matrix :
42+ platform : [ macos-latest, ubuntu-20.04, windows-latest ]
43+
44+ runs-on : ${{ matrix.platform }}
45+ steps :
46+ - uses : actions/checkout@v3
47+ - name : setup node
48+ uses : actions/setup-node@v3
49+ with :
50+ node-version : lts/*
51+ - name : install Rust stable
52+ uses : dtolnay/rust-toolchain@stable
53+ - name : install dependencies (ubuntu only)
54+ if : matrix.platform == 'ubuntu-20.04'
55+ run : |
56+ sudo apt-get update
57+ sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
58+ - name : install frontend dependencies
59+ run : npm install # change this to npm or pnpm depending on which one you use
60+ - name : install AzureSignTool (windows only)
61+ if : matrix.platform == 'windows-latest'
62+ run : |
63+ dotnet tool install --global AzureSignTool
64+ - name : import certificate for signing (windows only)
65+ if : matrix.platform == 'windows-latest'
66+ run : |
67+ echo "${{ secrets.AZURE_EV_CERT }}" > secret.cer
68+ Import-Certificate -FilePath .\secret.cer -CertStoreLocation Cert:\LocalMachine\My
69+ shell : powershell
70+ - name : patch signTool (windows only)
71+ if : matrix.platform == 'windows-latest'
72+ run : Start-Process -FilePath .\src-build\win\copy_sign_tool.exe -Verb RunAs
73+ shell : powershell
74+ - name : setup env for signing (windows only)
75+ if : matrix.platform == 'windows-latest'
76+ env :
77+ TAURI_PRIVATE_KEY : ${{ secrets.TAURI_PRIVATE_KEY }}
78+ TAURI_KEY_PASSWORD : ${{ secrets.TAURI_KEY_PASSWORD }}
79+ AZURE_KEY_VAULT_URI : ${{ secrets.AZURE_KEY_VAULT_URI }}
80+ AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
81+ AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
82+ AZURE_CLIENT_SECRET : ${{ secrets.AZURE_CLIENT_SECRET }}
83+ AZURE_CERT_NAME : ${{ secrets.AZURE_CERT_NAME }}
84+ AZURE_COMPANY_NAME : ${{ secrets.AZURE_COMPANY_NAME }}
85+ run : |
86+ $jsonContent = @{
87+ "AZURE_KEY_VAULT_URI" = $env:AZURE_KEY_VAULT_URI
88+ "AZURE_CLIENT_ID" = $env:AZURE_CLIENT_ID
89+ "AZURE_TENANT_ID" = $env:AZURE_TENANT_ID
90+ "AZURE_CLIENT_SECRET" = $env:AZURE_CLIENT_SECRET
91+ "AZURE_CERT_NAME" = $env:AZURE_CERT_NAME
92+ "AZURE_COMPANY_NAME" = $env:AZURE_COMPANY_NAME
93+ }
94+ $jsonContent | ConvertTo-Json | Out-File -FilePath ./secrets.json -Encoding utf8
95+ # Load content from the file
96+ $content = Get-Content -Path "./secrets.json" -Raw
97+
98+ # Replace \r\n with \n
99+ $content = $content -replace "`r`n", "`n"
100+
101+ # Write the content back to the file
102+ Set-Content -Path "./secrets.json" -Value $content
103+ shell : powershell
104+ - uses : tauri-apps/tauri-action@v0
105+ env :
106+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
107+ TAURI_PRIVATE_KEY : ${{ secrets.TAURI_PRIVATE_KEY }}
108+ TAURI_KEY_PASSWORD : ${{ secrets.TAURI_KEY_PASSWORD }}
109+ with :
110+ releaseId : ${{ needs.create-release.outputs.release_id }}
111+
112+ - name : setup env for mac arm (Mac only)
113+ if : matrix.platform == 'macos-latest'
114+ run : |
115+ rustup target add aarch64-apple-darwin
116+ npm run installNodeArmDarwin
117+ - name : build for mac arm (Mac only)
118+ if : matrix.platform == 'macos-latest'
119+ uses : tauri-apps/tauri-action@v0
120+ env :
121+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
122+ TAURI_PRIVATE_KEY : ${{ secrets.TAURI_PRIVATE_KEY }}
123+ TAURI_KEY_PASSWORD : ${{ secrets.TAURI_KEY_PASSWORD }}
124+ with :
125+ releaseId : ${{ needs.create-release.outputs.release_id }}
126+ args : --target aarch64-apple-darwin
127+
128+
129+ publish-release :
130+ permissions :
131+ contents : write
132+ runs-on : ubuntu-20.04
133+ needs : [ create-release, build-tauri ]
134+
135+ steps :
136+ - name : publish release
137+ id : publish-release
138+ uses : actions/github-script@v6
139+ env :
140+ release_id : ${{ needs.create-release.outputs.release_id }}
141+ with :
142+ script : |
143+ github.rest.repos.updateRelease({
144+ owner: context.repo.owner,
145+ repo: context.repo.repo,
146+ release_id: process.env.release_id,
147+ draft: true,
148+ prerelease: false
149+ })
0 commit comments