-
Notifications
You must be signed in to change notification settings - Fork 12
176 lines (174 loc) · 4.78 KB
/
ci.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
name: Check
on:
pull_request:
jobs:
changes:
name: Check Changes
runs-on: ubuntu-latest
outputs:
clojure-yasunori: ${{ steps.filter.outputs.clojure-yasunori }}
steps:
- uses: actions/checkout@v4
- name: filter
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
clojure-yasunori:
- 'packages/clojure-yasunori/**'
lint-github-actions:
name: Lint GitHub Actions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run actionlint
shell: bash
run: |
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
./actionlint -color
nix-flake:
name: Nix Flake Check
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: prepare nix
uses: cachix/install-nix-action@v29
- name: flake check
run: nix flake check
nix-flake-build:
name: Nix Flake Build
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: prepare nix
uses: cachix/install-nix-action@v29
- name: prepare cachix
uses: cachix/cachix-action@v15
with:
name: times-yasunori
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: build devShell
run: nix develop -L
- name: build packages
run: |
nix build -L .#yasunori-cli
nix build -L .#yasunori-net
lint-awesome-yasunori:
name: Lint Awesome Yasunori
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: |
#!/usr/bin/env bash
set -euo pipefail
mkdir -p "${HOME}"/bin
echo "PATH=${HOME}/bin:${PATH}" >> "${GITHUB_ENV}"
curl \
--show-error \
--silent \
--location \
--fail \
--retry 3 \
--connect-timeout 5 \
--max-time 60 \
--output "${HOME}/bin/yj" \
"https://github.com/sclevine/yj/releases/download/v5.1.0/yj-linux-amd64"
chmod +x "${HOME}"/bin/yj
npm install -g ajv-cli
- run: yj -tj < yasunori.toml > yasunori.json
- run: npx ajv validate -s schema.json -d yasunori.json
test-api:
name: Test API
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/api
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Setup
run: pnpm run generate:json
- name: Test
run: pnpm test
test-web:
name: Test Web
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/web
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm test
lint-api-and-web:
name: Lint API & Web
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Typecheck
run: pnpm run typecheck
- name: Lint
run: pnpm run lint
test-YasunoriDotNET:
name: Build & Test Yasunori.NET
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/Yasunori.NET
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal
test-clojure-yasunori:
name: Build & Test clojure-yasunori
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.clojure-yasunori == 'true' }}
defaults:
run:
working-directory: packages/clojure-yasunori
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'graalvm'
java-version: '22'
- uses: DeLaGuardo/[email protected]
with:
cli: 1.11.4.1474
- uses: actions/cache@v4
with:
path: |
~/.m2/repository
~/.gitlibs
~/.deps.clj
key: cljdeps-${{ hashFiles('deps.edn') }}
restore-keys: cljdeps-
- name: Build
run: make build
- name: Build native
run: make build.native
- name: Test
run: make test