Feat: async filters #1029
This file contains 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 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 }} |