Skip to content

Commit

Permalink
feat(ci): add CI workflow for each new pull request (#389)
Browse files Browse the repository at this point in the history
* feat(ci): add CI workflow for each new pull request

* feat(ci): cache node_modules to avoid repeated installing

* feat(ci): add npm install before every job

* feat(ci): try to retrieve cache instead of running npm install each time

* feat(ci): try to use actions/setup-node for npm caching

* feat(ci): try to re-add npm install before every job to find out if it will use the cache from prepare job

* feat(ci): try to use custom cache again

* feat(ci): try to use 'npm install' for 'build' job

* feat(ci): try to change path for node modules cache

* feat(ci): try to include all node_modules directories

* feat(ci): try to include all node_modules directories in all jobs

* feat(ci): add composite action for NPM jobs to avoid code duplicity

* feat(ci): add checkout before every calling prepare-npm-job action

* revert(ci): revert incorrect 'on' trigger

* revert(ci): try putting checkout step back to 'prepare-npm-job' action

* revert(ci): revert trying putting checkout step back to 'prepare-npm-job' action

This reverts commit 82854bd.

* fix(ci): add '~/.npm' to cache paths as it is used by some dependencies

* fix(ci): remove quotes from cache paths

* fix(ci): add '~/.npm' also to cache job, not just restore cache job

* fix(ci): update cache paths and try to store them in a variable

* refactor(ci): store cache key and restore-paths in environment variables

* revert(ci): store cache key and restore-paths in environment variables

This reverts commit 983b06b.
  • Loading branch information
Thomasan1999 authored Sep 13, 2024
1 parent 0d968f1 commit 036f292
Show file tree
Hide file tree
Showing 5 changed files with 2,616 additions and 22 deletions.
11 changes: 11 additions & 0 deletions .github/actions/prepare-npm-job/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: 'Prepare NPM job'
runs:
using: 'composite'
steps:
- name: Restore node modules cache
uses: actions/cache@v4
with:
path: ${{ env.CACHE_PATHS }}
key: ${{ runner.os }}-node_modules-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node_modules-
111 changes: 111 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: CI

on:
push:
branches:
- 'master'
pull_request:
branches:
- 'master'

env:
CACHE_PATHS: |
**/node_modules
~/.cache/puppeteer
jobs:
prepare:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x

- name: Install dependencies
run: npm install

- name: Cache node modules
id: cache
uses: actions/cache@v4
with:
path: ${{ env.CACHE_PATHS }}
key: ${{ runner.os }}-node_modules-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node_modules-
if: steps.cache.outputs.cache-hit != 'true'

- name: Store the cache status
id: set-cache-hit
run: echo "CACHE_HIT=$CACHE_HIT"
outputs:
CACHE_PATHS: ${{ env.CACHE_PATHS }}

build:
runs-on: ubuntu-latest
needs: prepare

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/actions/prepare-npm-job

- name: Build project
run: npm run build

format-check:
runs-on: ubuntu-latest
needs: prepare

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/actions/prepare-npm-job

- name: Check code format
run: npm run format:check

lint:
runs-on: ubuntu-latest
needs: prepare

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/actions/prepare-npm-job

- name: Run linter
run: npm run lint

type-check:
runs-on: ubuntu-latest
needs: prepare

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/actions/prepare-npm-job

- name: Check types
run: npm run type-check

test:
runs-on: ubuntu-latest
needs: prepare

steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/actions/prepare-npm-job

- name: Run tests
run: npm run test:run
12 changes: 8 additions & 4 deletions client/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
{
"version": "0.0.0",
"scripts": {
"serve": "vite",
"build": "vite build --emptyOutDir",
"test:run": "vitest --run",
"test:watch": "vitest -w",
"format:base": "prettier . -write",
"format": "npm run format:base -- -write",
"format:check": "npm runformat:base -- -check",
"lint": "eslint",
"lint:fix": "eslint --fix",
"format": "prettier . -write",
"serve": "vite",
"test:run:base": "vitest --run",
"test:run": "run-p serve test:run:base --race",
"test:watch:base": "vitest -w",
"test:watch": "run-p serve test:watch:base",
"type-check": "vue-tsc --noEmit"
},
"dependencies": {
Expand Down
Loading

0 comments on commit 036f292

Please sign in to comment.