-
-
Notifications
You must be signed in to change notification settings - Fork 124
133 lines (114 loc) · 4.28 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
131
132
133
name: Build/release
on:
push:
branches:
- main-v2
- feature/*
tags:
- v*
pull_request:
branches:
- main-v2
# env:
# DEBUG: '*'
jobs:
release:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- name: Checkout Git repository
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Node.js, NPM and Yarn
uses: actions/[email protected]
with:
node-version: 18
- run: rustup target add aarch64-apple-darwin
if: matrix.os == 'macos-latest'
- run: New-Item -Name downloads -Path $env:VCPKG_INSTALLATION_ROOT -ItemType Directory
if: runner.os == 'Windows'
- run: New-Item -Name archives -Path $env:VCPKG_INSTALLATION_ROOT -ItemType Directory
if: runner.os == 'Windows'
- run: Invoke-WebRequest -Uri https://fossies.org/windows/misc/nasm-2.16.01-win64.zip -OutFile $env:VCPKG_INSTALLATION_ROOT\downloads\nasm-2.16.01-win64.zip
if: runner.os == 'Windows'
- run: cd $env:VCPKG_INSTALLATION_ROOT && dir && dir $env:VCPKG_INSTALLATION_ROOT
if: runner.os == 'Windows'
- name: Set up vcpkg cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
$env:VCPKG_INSTALLATION_ROOT\downloads\
$env:VCPKG_INSTALLATION_ROOT\archives\
key: ${{ runner.os }}-${{ runner.arch }}-vcpkg
restore-keys: ${{ runner.os }}-${{ runner.arch }}-vcpkg-
if: runner.os == 'Windows'
- run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
if: runner.os == 'Windows'
- run: vcpkg install openssl:x64-windows-static-md
if: runner.os == 'Windows'
- name: Set up cargo cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
xal-node/target/
key: ${{ runner.os }}-${{ runner.arch }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-${{ runner.arch }}-cargo-
- name: Set up node_modules cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
node_modules/
xal-node/node_modules/
key: ${{ runner.os }}-${{ runner.arch }}-npm-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/yarn.lock') }}
restore-keys: ${{ runner.os }}-${{ runner.arch }}-npm-
- name: Install yarn dependencies
run: yarn
- name: Build/release Electron app
uses: samuelmeuli/[email protected]
with:
# GitHub token, automatically provided to the action
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.github_token }}
# If the commit is tagged with a version (e.g. "v1.0.0"),
# release the app after building
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
# if: startsWith(github.ref, 'refs/tags/v')
- name: Publish Linux AppImage
uses: actions/upload-artifact@v3
with:
name: greenlight-linux.AppImage
path: |
dist/*.AppImage
if: matrix.os == 'ubuntu-latest' && contains(github.event.head_commit.message, '[build]')
- name: Publish Linux DEB
uses: actions/upload-artifact@v3
with:
name: greenlight-linux.deb
path: |
dist/*.deb
if: matrix.os == 'ubuntu-latest' && contains(github.event.head_commit.message, '[build]')
- name: Publish Mac DMG
uses: actions/upload-artifact@v3
with:
name: greenlight-macos.dmg
path: |
dist/*.dmg
if: matrix.os == 'macos-latest' && contains(github.event.head_commit.message, '[build]')
- name: Publish Windows EXE
uses: actions/upload-artifact@v3
with:
name: greenlight-win.zip
path: |
dist/*.exe
if: matrix.os == 'windows-latest' && contains(github.event.head_commit.message, '[build]')