Skip to content

Commit b438b2f

Browse files
authored
Improve CI time using cache and artifacts (#14)
2 parents 9dbf966 + 234aa46 commit b438b2f

File tree

3 files changed

+35
-14
lines changed

3 files changed

+35
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Setup Deno with cache
2+
description: setup-deno with dependencies cache
3+
runs:
4+
using: "composite"
5+
steps:
6+
- uses: actions/cache@v3
7+
with:
8+
path: ~/.cache/deno
9+
key: deno-${{ github.job }}-${{ runner.os }}-${{ hashFiles('deno.lock') }}
10+
restore-keys: |
11+
deno-${{ github.job }}-${{ runner.os }}-
12+
- uses: denoland/setup-deno@v1
13+
with:
14+
deno-version: "v1.36.x"

.github/workflows/ci.yml

+19-14
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,16 @@ jobs:
1515
runs-on: ubuntu-latest
1616
steps:
1717
- uses: actions/checkout@v4
18-
- uses: denoland/setup-deno@v1
19-
with:
20-
deno-version: v1.36.x
18+
- uses: ./.github/actions/setup-deno-with-cache
2119
- id: fmt
22-
run: deno fmt
20+
run: deno fmt --check
2321
- id: lint
2422
run: deno lint
2523
check-dist:
2624
runs-on: ubuntu-latest
2725
steps:
2826
- uses: actions/checkout@v4
29-
- uses: denoland/setup-deno@v1
30-
with:
31-
deno-version: v1.36.x
27+
- uses: ./.github/actions/setup-deno-with-cache
3228
- name: Rebuild the dist/ directory
3329
run: deno task bundle
3430
- name: Compare the expected and actual dist/ directories
@@ -38,25 +34,35 @@ jobs:
3834
git diff
3935
exit 1
4036
fi
37+
# post processes
38+
- name: Upload dist for post job
39+
if: ${{ always() }}
40+
uses: actions/upload-artifact@v3
41+
with:
42+
name: js_dist
43+
path: |
44+
dist/
45+
action.yml
4146
- name: Create dist/*.js size json
47+
if: ${{ always() }}
4248
run: |
4349
find ./dist -type f -printf '%s %f\n' \
4450
| jq -n -R '{name: "dist_size", key: "dist_size", metrics: [inputs | capture("(?<value>\\S+)\\s+(?<key>.+)") + {unit: "byte"} | .value |= tonumber | .name = .key ]}' \
4551
> dist_js_sizes.json
4652
cat dist_js_sizes.json
4753
# octocov must needs some coverage files but this job don't exec test, so put dummy file.
4854
- name: Create dummy coverage
55+
if: ${{ always() }}
4956
run: touch coverage.out
5057
- uses: k1LoW/octocov-action@v0
58+
if: ${{ always() }}
5159
env:
5260
OCTOCOV_CUSTOM_METRICS_DIST_JS: dist_js_sizes.json
5361
test:
5462
runs-on: ubuntu-latest
5563
steps:
5664
- uses: actions/checkout@v4
57-
- uses: denoland/setup-deno@v1
58-
with:
59-
deno-version: v1.36.x
65+
- uses: ./.github/actions/setup-deno-with-cache
6066
- id: test
6167
run: deno test
6268

@@ -65,10 +71,9 @@ jobs:
6571
if: ${{ always() }}
6672
needs: [ check, check-dist, test ]
6773
steps:
68-
- uses: actions/checkout@v4
69-
- uses: denoland/setup-deno@v1
74+
- name: Download bundled dist
75+
uses: actions/download-artifact@v3
7076
with:
71-
deno-version: v1.36.x
72-
- run: deno task bundle
77+
name: js_dist
7378
- name: Run self action
7479
uses: ./

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ You can set `GITHUB_API_URL` environment variable to use this action with GHES.
5757
```
5858

5959
# DEVELOPMENT
60+
6061
## Setup
62+
6163
```
6264
deno task setup:githooks
6365
```

0 commit comments

Comments
 (0)