chore(deps): update npm patch dependencies (patch) #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [main, develop] | |
pull_request: | |
branches: [main, develop] | |
jobs: | |
install-dependencies: | |
runs-on: ubuntu-latest | |
outputs: | |
cache-hit: ${{ steps.cache-deps.outputs.cache-hit }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
cache: 'yarn' | |
- name: Cache dependencies | |
id: cache-deps | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
example/node_modules | |
key: ${{ runner.os }}-deps-${{ hashFiles('yarn.lock', 'example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
- name: Install dependencies | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
run: | | |
yarn install --cwd example --frozen-lockfile | |
yarn install --frozen-lockfile | |
- name: Upload workspace | |
uses: actions/upload-artifact@v4 | |
with: | |
name: workspace | |
path: | | |
. | |
!node_modules/.cache | |
!example/node_modules/.cache | |
retention-days: 1 | |
lint: | |
runs-on: ubuntu-latest | |
needs: install-dependencies | |
steps: | |
- name: Download workspace | |
uses: actions/download-artifact@v4 | |
with: | |
name: workspace | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
cache: 'yarn' | |
- name: Restore dependencies cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
example/node_modules | |
key: ${{ runner.os }}-deps-${{ hashFiles('yarn.lock', 'example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
- name: Lint files | |
run: yarn lint | |
typescript: | |
runs-on: ubuntu-latest | |
needs: install-dependencies | |
steps: | |
- name: Download workspace | |
uses: actions/download-artifact@v4 | |
with: | |
name: workspace | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
cache: 'yarn' | |
- name: Restore dependencies cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
example/node_modules | |
key: ${{ runner.os }}-deps-${{ hashFiles('yarn.lock', 'example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
- name: Typecheck files | |
run: yarn typescript | |
unit-tests: | |
runs-on: ubuntu-latest | |
needs: install-dependencies | |
steps: | |
- name: Download workspace | |
uses: actions/download-artifact@v4 | |
with: | |
name: workspace | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
cache: 'yarn' | |
- name: Restore dependencies cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
example/node_modules | |
key: ${{ runner.os }}-deps-${{ hashFiles('yarn.lock', 'example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
- name: Run unit tests | |
run: yarn test --coverage | |
- name: Upload coverage artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage | |
path: coverage/ | |
retention-days: 30 | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
directory: ./coverage/ | |
fail_ci_if_error: false | |
build-package: | |
runs-on: ubuntu-latest | |
needs: install-dependencies | |
steps: | |
- name: Download workspace | |
uses: actions/download-artifact@v4 | |
with: | |
name: workspace | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '22' | |
cache: 'yarn' | |
- name: Restore dependencies cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
node_modules | |
example/node_modules | |
key: ${{ runner.os }}-deps-${{ hashFiles('yarn.lock', 'example/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-deps- | |
- name: Build package | |
run: yarn prepare | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build | |
path: lib/ | |
retention-days: 30 | |
# Summary job that depends on all other jobs | |
ci-complete: | |
runs-on: ubuntu-latest | |
needs: [lint, typescript, unit-tests, build-package] | |
if: always() | |
steps: | |
- name: Check all jobs status | |
run: | | |
if [[ "${{ needs.lint.result }}" == "failure" || "${{ needs.typescript.result }}" == "failure" || "${{ needs.unit-tests.result }}" == "failure" || "${{ needs.build-package.result }}" == "failure" ]]; then | |
echo "One or more jobs failed" | |
exit 1 | |
else | |
echo "All jobs completed successfully" | |
fi |