-
-
Notifications
You must be signed in to change notification settings - Fork 108
130 lines (117 loc) · 4.79 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Build
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarCloud Scan Electron
uses: SonarSource/sonarcloud-github-action@master
with:
projectBaseDir: electron
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: SonarCloud Scan Client
uses: SonarSource/sonarcloud-github-action@master
with:
projectBaseDir: client
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: [22.x]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
- name: Install Yarn Berry
run: corepack enable && corepack prepare yarn@stable --activate
- name: Get Package Version
id: package_version
shell: bash
run: echo "PACKAGE_VERSION=$(node -p -e "require('./electron/package.json').version")" >> $GITHUB_ENV
- name: Setup Sentry Release
if: matrix.os == 'ubuntu-latest'
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
run: |
yarn dlx @sentry/cli releases set-commits "${{ env.PACKAGE_VERSION }}" --commit "${{ github.repository }}@${{ github.sha }}"
yarn dlx @sentry/cli releases new "${{ env.PACKAGE_VERSION }}"
- name: Install Dependencies (Electron)
run: |
cd electron
yarn install
cd ..
- name: Install Dependencies (Client)
run: |
cd client
yarn install
cd ..
- name: Build Client
run: |
cd client
yarn build
cd ..
- name: Create .env file
shell: bash
run: |
cd electron
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env
echo "APPLE_ID=${{ secrets.APPLE_ID }}" >> .env
echo "APPLE_ID_PASSWORD=${{ secrets.APPLE_ID_PASSWORD }}" >> .env
echo "APPLE_TEAM_ID=${{ secrets.APPLE_TEAM_ID }}" >> .env
cd ..
- name: Build and Release Electron App
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEBUG: electron-builder,electron-builder:*
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
CSC_IDENTITY_AUTO_DISCOVERY: ${{ matrix.os != 'windows-latest' }}
run: |
cd electron
yarn build
yarn prepare_client
yarn release
cd ..
- name: Upload Sentry Sourcemaps
if: matrix.os == 'ubuntu-latest'
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
run: |
yarn dlx @sentry/cli releases files "${{ env.PACKAGE_VERSION }}" upload-sourcemaps ./client/build/static/js/ --rewrite --url-prefix "~/dist/static/js"
yarn dlx @sentry/cli releases files "${{ env.PACKAGE_VERSION }}" list
yarn dlx @sentry/cli releases finalize "${{ env.PACKAGE_VERSION }}"
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-build
path: |
electron/packaged/*.dmg
electron/packaged/*.AppImage
electron/packaged/*.deb
electron/packaged/*.rpm
electron/packaged/*.exe
electron/packaged/*.msi