-
Notifications
You must be signed in to change notification settings - Fork 33
132 lines (128 loc) · 4.1 KB
/
tests.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
131
# Copyright 2019 Marc Nuri San Felix
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Tests
on:
push:
branches:
- main
pull_request:
env:
SONAR_SCANNER_VERSION: 5.0.1.3006
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install
run: npm install
- name: Pretest
run: npm run pretest
- name: Test
run: NODE_OPTIONS=--experimental-vm-modules npm test
- name: Download and install sonar-scanner
run: |
mkdir -p $HOME/.sonar \
&& wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip -O sonar-scanner.zip \
&& unzip sonar-scanner.zip -d $HOME/.sonar/ \
&& rm sonar-scanner.zip
- name: SonarCloud
run: |
$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux/bin/sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
SONAR_SCANNER_OPTS: "-server"
linux-build:
name: Linux Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install Snap
# Not needed for this job just to verify it can be installed for use in the publishing workflow
run: |
sudo apt install snapd
sudo chown root:root / # Snapcraft requires '/' to be root owned
sudo snap install snapcraft --classic
- name: Install
run: npm install
- name: Build
run: |
./utils/prepare-electron-builder.js
npm run build:linux
- name: CI Artifact for AppImage
uses: actions/upload-artifact@v3
with:
name: electronim-linux-x86_64.AppImage
path: dist/electronim-linux-x86_64.AppImage
macos-build:
name: macOS Build
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: macOS requirements
run: |
brew install python-setuptools
- name: Install
run: npm install
- name: Install macOS only requirement (Electron Builder) # TODO: Move to prepare-electron-builder.js script
run: npm install dmg-license
- name: Build
run: |
./utils/prepare-electron-builder.js
npm run build:mac
windows-build:
name: Windows Build
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install
run: npm install
- name: Build
run: |
node .\utils\prepare-electron-builder.js
npm run build:win
- name: Prepare Chocolatey
run: node .\utils\prepare-chocolatey.js
- name: Choco Script tests
run: |
powershell
choco pack --version=$(node -p "require('./package').version") build-config/electronim.nuspec
choco install electronim -dvy -s .
- name: CI Artifact for exe
uses: actions/upload-artifact@v3
with:
name: electronim-win-x64.exe
path: dist/electronim-win-x64.exe