Skip to content

Commit 26a957f

Browse files
committed
some actions improvements
1 parent 1262fa8 commit 26a957f

File tree

5 files changed

+347
-30
lines changed

5 files changed

+347
-30
lines changed

.github/dependabot.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 10
8+
9+
- package-ecosystem: "npm"
10+
directory: "/"
11+
schedule:
12+
interval: "weekly"
13+
open-pull-requests-limit: 10
14+
allow:
15+
- dependency-type: "direct"
16+
commit-message:
17+
prefix: "deps(npm)"
18+
19+
- package-ecosystem: "docker"
20+
directory: "/"
21+
schedule:
22+
interval: "weekly"
23+
open-pull-requests-limit: 5
24+
commit-message:
25+
prefix: "deps(docker)"

.github/workflows/codeql.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches: ["master"]
6+
pull_request:
7+
branches: ["master"]
8+
schedule:
9+
- cron: "33 5 * * 1"
10+
11+
permissions:
12+
contents: read
13+
security-events: write
14+
15+
jobs:
16+
analyze:
17+
name: Analyze
18+
runs-on: ubuntu-latest
19+
timeout-minutes: 30
20+
permissions:
21+
contents: read
22+
security-events: write
23+
actions: read
24+
25+
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v4
28+
29+
- name: Initialize CodeQL
30+
uses: github/codeql-action/init@v3
31+
with:
32+
languages: javascript
33+
34+
- name: Autobuild
35+
uses: github/codeql-action/autobuild@v3
36+
37+
- name: Perform CodeQL Analysis
38+
uses: github/codeql-action/analyze@v3
39+
with:
40+
category: "/language:javascript"

.github/workflows/docker-check.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Docker Check
2+
3+
on:
4+
push:
5+
branches: ["master"]
6+
pull_request:
7+
branches: ["master"]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
dockerfile-lint:
15+
name: Lint Dockerfile
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
- name: Hadolint
21+
uses: hadolint/[email protected]
22+
with:
23+
files: Dockerfile
24+
25+
build:
26+
name: Build Docker image
27+
runs-on: ubuntu-latest
28+
needs: dockerfile-lint
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@v4
32+
- name: Set up QEMU
33+
uses: docker/setup-qemu-action@v3
34+
- name: Set up Docker Buildx
35+
uses: docker/setup-buildx-action@v3
36+
- name: Build
37+
uses: docker/[email protected]
38+
with:
39+
context: .
40+
file: ./Dockerfile
41+
push: false
42+
load: true
43+
tags: devdenbot:ci
44+
provenance: false

.github/workflows/lint.yml

Lines changed: 167 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,194 @@
1-
name: Lint
1+
name: Lint and Test
22

33
on:
44
push:
55
branches: ["master"]
6+
paths-ignore:
7+
- "**/*.md"
8+
- "docs/**"
9+
- "logs/**"
10+
- "result/**"
611
pull_request:
7-
# The branches below must be a subset of the branches above
812
branches: ["master"]
13+
paths-ignore:
14+
- "**/*.md"
15+
- "docs/**"
16+
- "logs/**"
17+
- "result/**"
918
schedule:
1019
- cron: "29 4 * * 1"
1120

21+
permissions:
22+
contents: read
23+
24+
concurrency:
25+
group: ${{ github.workflow }}-${{ github.ref }}
26+
cancel-in-progress: true
27+
1228
jobs:
13-
eslint:
14-
name: Run eslint scanning
29+
deps:
30+
name: Prepare dependencies
1531
runs-on: ubuntu-latest
16-
permissions:
17-
contents: read
18-
security-events: write
19-
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
32+
timeout-minutes: 15
2033
steps:
2134
- name: Checkout code
2235
uses: actions/checkout@v4
23-
24-
- name: Add gyp dependencies
36+
- name: Add system libs for native modules
2537
run: sudo apt update && sudo apt install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
26-
27-
- name: Install ESLint
38+
- name: Setup Bun
2839
uses: oven-sh/setup-bun@v2
2940
with:
3041
bun-version: latest
31-
32-
- name: Run install
42+
- name: Cache Bun package downloads
43+
id: bun-cache
44+
uses: actions/cache@v4
45+
with:
46+
path: |
47+
~/.bun/install/cache
48+
key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
49+
restore-keys: |
50+
${{ runner.os }}-bun-cache-
51+
- name: Cache node_modules
52+
id: node-modules-cache
53+
uses: actions/cache@v4
54+
with:
55+
path: |
56+
node_modules
57+
key: ${{ runner.os }}-node-modules-${{ hashFiles('bun.lock') }}
58+
restore-keys: |
59+
${{ runner.os }}-node-modules-
60+
- name: Install dependencies
3361
run: bun install --frozen-lockfile
62+
- name: Upload node_modules artifact
63+
uses: actions/upload-artifact@v4
64+
with:
65+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
66+
path: node_modules
67+
if-no-files-found: warn
3468

69+
lint:
70+
name: Lint
71+
needs: deps
72+
runs-on: ubuntu-latest
73+
timeout-minutes: 10
74+
permissions:
75+
contents: read
76+
security-events: write
77+
actions: read
78+
steps:
79+
- name: Checkout code
80+
uses: actions/checkout@v4
81+
- name: Setup Bun
82+
uses: oven-sh/setup-bun@v2
83+
with:
84+
bun-version: latest
85+
- name: Download node_modules artifact
86+
uses: actions/download-artifact@v4
87+
with:
88+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
89+
path: node_modules
3590
- name: Run ESLint
3691
run: bunx eslint . --format @microsoft/eslint-formatter-sarif --output-file eslint-results.sarif
37-
continue-on-error: true
38-
3992
- name: Upload analysis results to GitHub
93+
if: always()
4094
uses: github/codeql-action/upload-sarif@v3
4195
with:
4296
sarif_file: eslint-results.sarif
4397
wait-for-processing: true
98+
99+
format:
100+
name: Prettier Format Check
101+
needs: deps
102+
runs-on: ubuntu-latest
103+
timeout-minutes: 5
104+
steps:
105+
- name: Checkout code
106+
uses: actions/checkout@v4
107+
- name: Setup Bun
108+
uses: oven-sh/setup-bun@v2
109+
with:
110+
bun-version: latest
111+
- name: Download node_modules artifact
112+
uses: actions/download-artifact@v4
113+
with:
114+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
115+
path: node_modules
116+
- name: Check formatting
117+
run: bunx prettier --check .
118+
119+
typecheck:
120+
name: Type Check
121+
needs: deps
122+
runs-on: ubuntu-latest
123+
timeout-minutes: 10
124+
steps:
125+
- name: Checkout code
126+
uses: actions/checkout@v4
127+
- name: Setup Bun
128+
uses: oven-sh/setup-bun@v2
129+
with:
130+
bun-version: latest
131+
- name: Download node_modules artifact
132+
uses: actions/download-artifact@v4
133+
with:
134+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
135+
path: node_modules
136+
- name: Run TypeScript type check
137+
run: bunx tsc --noEmit -p tsconfig.json
138+
139+
build:
140+
name: Build
141+
needs: deps
142+
runs-on: ubuntu-latest
143+
timeout-minutes: 10
144+
steps:
145+
- name: Checkout code
146+
uses: actions/checkout@v4
147+
- name: Setup Bun
148+
uses: oven-sh/setup-bun@v2
149+
with:
150+
bun-version: latest
151+
- name: Download node_modules artifact
152+
uses: actions/download-artifact@v4
153+
with:
154+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
155+
path: node_modules
156+
- name: Build TypeScript
157+
run: bun run build
158+
- name: Upload build artifact (bin)
159+
if: always()
160+
uses: actions/upload-artifact@v4
161+
with:
162+
name: build-bin-${{ github.sha }}
163+
path: bin
164+
if-no-files-found: ignore
165+
166+
test:
167+
name: Unit Tests
168+
needs: deps
169+
runs-on: ubuntu-latest
170+
timeout-minutes: 15
171+
steps:
172+
- name: Checkout code
173+
uses: actions/checkout@v4
174+
- name: Add system libs for native modules (runtime)
175+
run: sudo apt update && sudo apt install -y libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
176+
- name: Setup Bun
177+
uses: oven-sh/setup-bun@v2
178+
with:
179+
bun-version: latest
180+
- name: Download node_modules artifact
181+
uses: actions/download-artifact@v4
182+
with:
183+
name: node-modules-${{ runner.os }}-${{ hashFiles('bun.lock') }}
184+
path: node_modules
185+
- name: Run Unit Tests with coverage
186+
run: bun test --coverage
187+
- name: Upload coverage report
188+
if: always()
189+
uses: actions/upload-artifact@v4
190+
with:
191+
name: coverage-${{ runner.os }}-${{ github.run_id }}
192+
path: |
193+
coverage
194+
if-no-files-found: ignore

0 commit comments

Comments
 (0)