Add advanced caching to GitHub Actions workflow for faster builds

This commit is contained in:
stabgan
2025-03-27 00:49:56 +05:30
parent 3f8446a26e
commit e4983f5eb7

View File

@@ -19,6 +19,17 @@ jobs:
node-version: '18'
cache: 'npm'
- name: Cache dependencies
uses: actions/cache@v3
id: npm-cache
with:
path: |
**/node_modules
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Configure npm
run: |
npm config set strict-ssl false
@@ -27,8 +38,17 @@ jobs:
npm config set fetch-retry-maxtimeout 120000
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm cache clean --force && npm install --legacy-peer-deps --no-optional
- name: Cache build output
uses: actions/cache@v3
with:
path: dist
key: ${{ runner.os }}-build-${{ github.sha }}
restore-keys: |
${{ runner.os }}-build-
- name: Build TypeScript
run: npm run build
@@ -53,6 +73,18 @@ jobs:
with:
node-version: '18'
registry-url: 'https://registry.npmjs.org'
cache: 'npm'
- name: Cache dependencies
uses: actions/cache@v3
id: npm-cache
with:
path: |
**/node_modules
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Configure npm
run: |
@@ -62,6 +94,7 @@ jobs:
npm config set fetch-retry-maxtimeout 120000
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm cache clean --force && npm install --legacy-peer-deps --no-optional
- name: Download build artifacts
@@ -89,6 +122,14 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
@@ -124,11 +165,22 @@ jobs:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: |
type=gha
type=local,src=/tmp/.buildx-cache
cache-to: |
type=gha,mode=max
type=local,dest=/tmp/.buildx-cache-new,mode=max
build-args: |
NPM_CONFIG_STRICT_SSL=false
NPM_CONFIG_REGISTRY=https://registry.npmjs.org/
NPM_CONFIG_FETCH_RETRY_MINTIMEOUT=20000
NPM_CONFIG_FETCH_RETRY_MAXTIMEOUT=120000
NODE_ENV=development
# Temp fix for https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache