Skip to content

Commit

Permalink
update ci
Browse files Browse the repository at this point in the history
  • Loading branch information
Pinwheeler committed Dec 29, 2024
1 parent 3813231 commit a2ac436
Showing 1 changed file with 137 additions and 4 deletions.
141 changes: 137 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,163 @@ on:
- main

jobs:
test:
setup:
runs-on: ubuntu-latest

outputs:
node_version: ${{ steps.nvmrc.outputs.NODE_VERSION }}
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Read Node.js version from .nvmrc
id: nvmrc
run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_ENV
run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_ENV && echo "::set-output name=NODE_VERSION::$(cat .nvmrc)"

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
node-version: ${{ steps.nvmrc.outputs.NODE_VERSION }}

- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ steps.nvmrc.outputs.NODE_VERSION }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ steps.nvmrc.outputs.NODE_VERSION }}-
- name: Install dependencies
run: npm install

- name: Save node_modules
if: steps.cache-node-modules.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v3
with:
name: node-modules
path: node_modules

unit-tests:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}

- name: Restore node_modules
uses: actions/download-artifact@v3
with:
name: node-modules
path: node_modules

- name: Run unit tests
run: npm test

lint:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}

- name: Restore node_modules
uses: actions/download-artifact@v3
with:
name: node-modules
path: node_modules

- name: Lint code
run: npm run lint

build:
needs: [unit-tests, lint]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}

- name: Restore node_modules
uses: actions/download-artifact@v3
with:
name: node-modules
path: node_modules

- name: Build project
run: npm run build

- name: Save build output
uses: actions/upload-artifact@v3
with:
name: build-output
path: build

deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}

- name: Restore build output
uses: actions/download-artifact@v3
with:
name: build-output
path: build

- name: Deploy to Netlify
run: |
npm install netlify-cli -g
netlify deploy --dir=build --prodIfUnlocked=false --json > netlify-output.json
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}

- name: Extract Netlify deploy URL
id: extract_url
run: echo "DEPLOY_URL=$(cat netlify-output.json | jq -r '.deploy_url')" >> $GITHUB_ENV && echo "::set-output name=DEPLOY_URL::$(cat netlify-output.json | jq -r '.deploy_url')"

cypress-tests:
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ needs.setup.outputs.node_version }}

- name: Restore node_modules
uses: actions/download-artifact@v3
with:
name: node-modules
path: node_modules

- name: Install Cypress
run: npm install cypress --save-dev

- name: Run Cypress tests
run: npx cypress run --env baseUrl=${{ needs.deploy.outputs.DEPLOY_URL }}
env:
CYPRESS_baseUrl: ${{ needs.deploy.outputs.DEPLOY_URL }}

0 comments on commit a2ac436

Please sign in to comment.