Skip to content

feat: add http cache #398

feat: add http cache

feat: add http cache #398

Workflow file for this run

name: CI for KernelCI Dashboard
on:
push:
branches: [main]
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
concurrency:
group: ci-check-${{ github.ref }}
cancel-in-progress: true
env:
CI: true
jobs:
setup-node:
if: github.event.pull_request.draft != true
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
paths-node_modules: ${{ steps.paths-node_modules.outputs.paths }}
steps:
- uses: actions/checkout@v4
- name: Cache node_modules
uses: actions/cache@v4
id: cache-node_modules
with:
key: node_modules-${{ runner.os }}-${{ hashFiles('./dashboard/pnpm-lock.yaml') }}
path: ./dashboard/node_modules
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Installing dependencies with pnpm
if: steps.cache-node_modules.outputs.cache-hit != 'true'
run: pnpm install --frozen-lockfile
working-directory: ./dashboard
lint-js:
if: github.event.pull_request.draft != true
needs: setup-node
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Fetch node_modules
uses: actions/cache@v4
id: fetch-node_modules
with:
key: node_modules-${{ runner.os }}-${{ hashFiles('./dashboard/pnpm-lock.yaml') }}
path: ./dashboard/node_modules
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version-file: './dashboard/.nvmrc'
- name: Run eslint
run: pnpm lint-staged
working-directory: ./dashboard
build-front:
if: github.event.pull_request.draft != true
needs: setup-node
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Fetch node_modules
uses: actions/cache@v4
id: fetch-node_modules
with:
key: node_modules-${{ runner.os }}-${{ hashFiles('./dashboard/pnpm-lock.yaml') }}
path: ./dashboard/node_modules
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version-file: './dashboard/.nvmrc'
- name: Run build
run: pnpm build
working-directory: ./dashboard
build-django:
if: github.event.pull_request.draft != true
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Install Poetry
run: |
python -m pip install --upgrade pip
pip install poetry
- name: Install dependencies
run: poetry install
working-directory: ./backend
- name: Lint
run: poetry run flake8
working-directory: ./backend
deploy-staging:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs:
- lint-js
- build-front
- build-django
steps:
- name: Configure staging host authenticity
run: |
mkdir -p ~/.ssh/ && chmod 700 ~/.ssh/
touch ~/.ssh/known_hosts && chmod 600 ~/.ssh/known_hosts
echo "$SSH_HOSTKEY" > ~/.ssh/known_hosts
env:
SSH_HOSTKEY: ${{ secrets.STAGING_HOSTKEY }}
- name: Deploy to staging
run: |
eval $(ssh-agent -s)
echo "$SSH_KEY" | ssh-add - >/dev/null
ssh "${SSH_USER}@${SSH_HOST}" "deploy ${GITHUB_SHA}"
env:
SSH_USER: ${{ secrets.STAGING_USER }}
SSH_HOST: ${{ secrets.STAGING_HOST }}
SSH_KEY: ${{ secrets.STAGING_KEY }}