feat(ci): skip build if no source changes (cache build output by hash)

This commit is contained in:
datadunia
2026-06-18 09:09:51 +07:00
parent 6f22aad1ad
commit 08b152a370
3 changed files with 45 additions and 2 deletions
+14 -2
View File
@@ -23,22 +23,34 @@ jobs:
with:
node-version: '24'
- name: Hash source files
id: hash-src
run: echo "hash=$(find apps/dashboard-ui -type f \( -name '*.vue' -o -name '*.ts' -o -name '*.js' -o -name '*.css' -o -name '*.json' -o -name '*.html' \) | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v3
id: cache-build
with:
path: apps/dashboard-ui/dist
key: build-dashboard-${{ steps.hash-src.outputs.hash }}
- name: Hash package-lock
id: hash-npm
run: echo "hash=$(sha256sum apps/dashboard-ui/package-lock.json | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v3
id: cache-npm
with:
path: |
~/.npm
path: ~/.npm
key: npm-dashboard-${{ steps.hash-npm.outputs.hash }}
restore-keys: npm-dashboard-
- name: Install
if: steps.cache-build.outputs.cache-hit != 'true'
working-directory: apps/dashboard-ui
run: npm ci || npm install
- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
working-directory: apps/dashboard-ui
run: npm run build