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