This repository has been archived on 2022-10-07. You can view files and clone it, but cannot push or open issues or pull requests.
skynet-webportal/.github/workflows/lint.yml

131 lines
4.5 KiB
YAML

name: Lint
on:
pull_request:
jobs:
# Determine what the js changes are
js-changes:
runs-on: ubuntu-latest
outputs:
packages: ${{ steps.filter.outputs.changes }}
steps:
# Use paths-filter to determine which paths have changes
# https://github.com/dorny/paths-filter
- uses: dorny/paths-filter@v2
id: filter
with:
# Format of key: value. When there is a change detected in value, the
# key will be returned in the output.
filters: |
packages/dashboard: packages/dashboard/**
packages/dashboard-v2: packages/dashboard-v2/**
packages/dnslink-api: packages/dnslink-api/**
packages/handshake-api: packages/handshake-api/**
packages/health-check: packages/health-check/**
packages/website: packages/website/**
# Determine what the dockerfile changes are
dockerfile-changes:
runs-on: ubuntu-latest
outputs:
packages: ${{ steps.filter.outputs.changes }}
steps:
# Use paths-filter to determine which paths have changes
# https://github.com/dorny/paths-filter
- uses: dorny/paths-filter@v2
id: filter
with:
# Format of key: value. When there is a change detected in value, the
# key will be returned in the output.
filters: |
docker/nginx/Dockerfile: docker/nginx/Dockerfile
docker/sia/Dockerfile: docker/sia/Dockerfile
packages/dashboard/Dockerfile: packages/dashboard/Dockerfile
packages/dnslink-api/Dockerfile: packages/dnslink-api/Dockerfile
packages/handshake-api/Dockerfile: packages/handshake-api/Dockerfile
packages/health-check/Dockerfile: packages/health-check/Dockerfile
packages/website/Dockerfile: packages/website/Dockerfile
# Run the prettier lint if there are changes to any of the js packages
prettier:
needs: js-changes
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
working-directory: ${{ fromJSON(needs.js-changes.outputs.packages) }}
steps:
- uses: actions/checkout@v3
- name: Run JS-Lint Action
uses: SkynetLabs/.github/.github/actions/prettier@master
with:
working-directory: ${{ matrix.working-directory }}
# Run the eslint if there were changes to the dashboard packages
eslint:
needs: js-changes
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
working-directory: ${{ fromJSON(needs.js-changes.outputs.packages) }}
steps:
- uses: actions/checkout@v3
- name: Run yarn next lint on packages/dashboard
uses: ./.github/actions/node-action
if: ${{ matrix.working-directory == 'packages/dashboard' }}
with:
working-directory: ${{ matrix.working-directory }}
node-action: yarn next lint
- name: Run yarn lint on packages/dashboard-v2
uses: ./.github/actions/node-action
if: ${{ matrix.working-directory == 'packages/dashboard-v2' }}
with:
working-directory: ${{ matrix.working-directory }}
node-action: yarn lint
# Run the hadolint dockefile lint if there are changes to any of the
# dockerfiles
hadolint:
needs: dockerfile-changes
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
dockerfile: ${{ fromJSON(needs.dockerfile-changes.outputs.packages) }}
steps:
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v2.1.0
with:
dockerfile: ${{ matrix.dockerfile }}
# Determine if there are python changes
python-changes:
runs-on: ubuntu-latest
outputs:
# Check if the changed status of py is true
updates: steps.filter.outputs.py == 'true'
steps:
# Use paths-filter to determine which paths have changes
# https://github.com/dorny/paths-filter
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
py: "**.py"
# Run the hadolint dockefile lint if there are changes to any of the
# dockerfiles
python-lint:
needs: python-changes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Black python linter
if: ${{ needs.python-changes.outputs.updates }}
uses: ./.github/actions/python-black-lint
- name: Run Flake8 python linter
if: ${{ needs.python-changes.outputs.updates }}
uses: ./.github/actions/python-flake8-lint