1 |
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node |
2 |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions |
3 |
|
4 |
name: Build |
5 |
|
6 |
on: [push, pull_request] |
7 |
|
8 |
jobs: |
9 |
build: |
10 |
strategy: |
11 |
matrix: |
12 |
node-version: [21.x, 22.x] |
13 |
os: [ubuntu-latest, macos-latest, windows-latest] |
14 |
|
15 |
runs-on: ${{ matrix.os }} |
16 |
|
17 |
steps: |
18 |
- uses: actions/checkout@v3 |
19 |
|
20 |
- name: Use Node.js ${{ matrix.node-version }} |
21 |
uses: actions/setup-node@v3 |
22 |
with: |
23 |
node-version: ${{ matrix.node-version }} |
24 |
|
25 |
- name: Install Libraries (Linux) |
26 |
run: sudo apt update && sudo apt install build-essential librsvg2-dev libgif-dev giflib-tools libcurl4 libcurl4-gnutls-dev libgtk-3-dev libpango1.0-dev libpng-dev libpng++-dev libpng-tools libjpeg-tools libjpeg-progs libjpeg-dev -y |
27 |
if: matrix.os == 'ubuntu-latest' |
28 |
|
29 |
- name: Install Libraries and Tools (macOS) |
30 |
run: brew install curl pkg-config cairo pango libpng jpeg giflib librsvg |
31 |
if: matrix.os == 'macos-latest' |
32 |
|
33 |
- name: "Install Native Libraries" |
34 |
run: | |
35 |
git clone https://github.com/Cogmasters/concord; |
36 |
cd concord; |
37 |
make; |
38 |
sudo make install; |
39 |
cd ..; |
40 |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' |
41 |
|
42 |
- name: "Install Dependencies" |
43 |
run: npm install -D |
44 |
|
45 |
- name: "ESLint" |
46 |
run: npm run lint -- --max-warnings=0 |
47 |
|
48 |
- name: "Build (TypeScript)" |
49 |
run: npm run build --if-present |
50 |
|
51 |
- name: "Build (Native)" |
52 |
run: make |
53 |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' |
54 |
|
55 |
- name: "Test" |
56 |
run: npx vitest run --coverage |
57 |
|
58 |
- name: Upload coverage reports to Codecov |
59 |
uses: codecov/[email protected] |
60 |
with: |
61 |
token: ${{ secrets.CODECOV_TOKEN }} |
62 |
slug: onesoft-sudo/sudobot |
63 |
|
64 |
blazebuild: |
65 |
strategy: |
66 |
matrix: |
67 |
os: [ubuntu-latest, macos-latest, windows-latest] |
68 |
|
69 |
runs-on: ${{ matrix.os }} |
70 |
|
71 |
steps: |
72 |
- name: Set git to use LF |
73 |
run: | |
74 |
git config --global core.autocrlf false |
75 |
git config --global core.eol lf |
76 |
|
77 |
- uses: actions/checkout@v3 |
78 |
|
79 |
- name: Install tools on macOS |
80 |
run: brew install curl pkg-config cairo pango libpng jpeg giflib librsvg |
81 |
if: matrix.os == 'macos-latest' |
82 |
|
83 |
- name: Build with BlazeBuild |
84 |
run: ./blazew build |