forked from github/plane
138 lines
3.7 KiB
YAML
138 lines
3.7 KiB
YAML
name: Build and Lint on Pull Request
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
types: ["opened", "synchronize"]
|
|
|
|
jobs:
|
|
get-changed-files:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
apiserver_changed: ${{ steps.changed-files.outputs.apiserver_any_changed }}
|
|
admin_changed: ${{ steps.changed-files.outputs.admin_any_changed }}
|
|
space_changed: ${{ steps.changed-files.outputs.space_any_changed }}
|
|
web_changed: ${{ steps.changed-files.outputs.web_any_changed }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Get changed files
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@v44
|
|
with:
|
|
files_yaml: |
|
|
apiserver:
|
|
- apiserver/**
|
|
admin:
|
|
- admin/**
|
|
- packages/**
|
|
- 'package.json'
|
|
- 'yarn.lock'
|
|
- 'tsconfig.json'
|
|
- 'turbo.json'
|
|
space:
|
|
- space/**
|
|
- packages/**
|
|
- 'package.json'
|
|
- 'yarn.lock'
|
|
- 'tsconfig.json'
|
|
- 'turbo.json'
|
|
web:
|
|
- web/**
|
|
- packages/**
|
|
- 'package.json'
|
|
- 'yarn.lock'
|
|
- 'tsconfig.json'
|
|
- 'turbo.json'
|
|
|
|
lint-apiserver:
|
|
needs: get-changed-files
|
|
runs-on: ubuntu-latest
|
|
if: needs.get-changed-files.outputs.apiserver_changed == 'true'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x" # Specify the Python version you need
|
|
- name: Install Pylint
|
|
run: python -m pip install ruff
|
|
- name: Install Apiserver Dependencies
|
|
run: cd apiserver && pip install -r requirements.txt
|
|
- name: Lint apiserver
|
|
run: ruff check --fix apiserver
|
|
|
|
lint-admin:
|
|
needs: get-changed-files
|
|
if: needs.get-changed-files.outputs.admin_changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn lint --filter=admin
|
|
|
|
lint-space:
|
|
needs: get-changed-files
|
|
if: needs.get-changed-files.outputs.space_changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn lint --filter=space
|
|
|
|
lint-web:
|
|
needs: get-changed-files
|
|
if: needs.get-changed-files.outputs.web_changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn lint --filter=web
|
|
|
|
build-admin:
|
|
needs: lint-admin
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn build --filter=admin
|
|
|
|
build-space:
|
|
needs: lint-space
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn build --filter=space
|
|
|
|
build-web:
|
|
needs: lint-web
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18.x
|
|
- run: yarn install
|
|
- run: yarn build --filter=web
|