Cache page assets during CI/CD
All checks were successful
Create Docker Image / Test Application (x86_64) (push) Successful in 36s
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 1m21s
Create Docker Image / Build Docker Image (arm64) (push) Successful in 3m26s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s

This commit is contained in:
Deon George 2025-01-03 23:25:54 +11:00
parent 3daec4b5e6
commit 6e1a90cd50

View File

@ -6,32 +6,38 @@ env:
DOCKER_HOST: tcp://127.0.0.1:2375
jobs:
# test:
# strategy:
# matrix:
# arch:
# - x86_64
# # arm64
#
# name: Test Application
# runs-on: docker-${{ matrix.arch }}
# container:
# image: docker:dind
# privileged: true
#
# steps:
# - name: Environment Setup
# run: |
# # If we have a proxy use it
# if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# # Some pre-reqs
# apk add git nodejs npm
# ## Some debugging info
# # env|sort
#
# - name: Code Checkout
# uses: actions/checkout@v4
#
test:
strategy:
matrix:
arch:
- x86_64
# arm64
name: Test Application
runs-on: docker-${{ matrix.arch }}
container:
image: docker:dind
privileged: true
steps:
- name: Environment Setup
run: |
# If we have a proxy use it
if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# Some pre-reqs
apk add git nodejs npm tar zstd
## Some debugging info
# env|sort
- name: Code Checkout
uses: actions/checkout@v4
- name: Build Assets
run: |
# Build assets
npm i
npm run prod
# - name: Run Tests
# run: |
# mv .env.testing .env
@ -43,19 +49,31 @@ jobs:
# php artisan key:generate
# php artisan migrate
# php artisan db:seed
# # Build assets
# npm i
# npm run prod
# # run laravel tests
# # XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never
- name: Cache page assets
id: cache-page-assets
uses: actions/cache@v3
# env:
# cache-name: page-assets
with:
path: |
public/css/app.css
public/js/app.js
public/js/vendor.js
#key: build-pla-page-assets-${{ hashFiles('**/package-lock.json') }}
key: build-pla-page-assets
#restore-keys: |
# build-pla-page-assets-
build:
strategy:
matrix:
arch:
- x86_64
- arm64
# needs: [test]
needs: [test]
name: Build Docker Image
runs-on: docker-${{ matrix.arch }}
@ -72,7 +90,7 @@ jobs:
# If we have a proxy use it
if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# Some pre-reqs
apk add git curl nodejs npm
apk add git curl nodejs npm tar zstd
# Start docker
( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3
## Some debugging info
@ -95,16 +113,35 @@ jobs:
- name: Code Checkout
uses: actions/checkout@v4
- name: Build Assets
- name: Cache page assets
id: cache-page-assets
uses: actions/cache@v3
# env:
# cache-name: page-assets
with:
path: |
public/css/app.css
public/js/app.js
public/js/vendor.js
#key: build-pla-page-assets-${{ hashFiles('**/package-lock.json') }}
key: build-pla-page-assets
#restore-keys: |
# build-pla-page-assets-
- if: ${{ steps.cache-page-assets.outputs.cache-hit != 'true' }}
name: List the state of page assets
continue-on-error: false
run: |
# Build assets
npm i
npm run prod
echo CACHE-HIT:${{ steps.cache-page-assets.outputs.cache-hit }}
ls -al public/css/
ls -al public/js/
- name: Record version and Delete Unnecessary files
run: |
echo ${GITHUB_SHA::8} > VERSION
rm -rf .git* tests/ storage/app/test/
ls -al public/css/
ls -al public/js/
- name: Build and Push Docker Image
uses: docker/build-push-action@v5