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 }} web_changed: ${{ steps.changed-files.outputs.web_any_changed }} space_changed: ${{ steps.changed-files.outputs.deploy_any_changed }} steps: - uses: actions/checkout@v3 - name: Get changed files id: changed-files uses: tj-actions/changed-files@v41 with: files_yaml: | apiserver: - apiserver/** web: - web/** - packages/** - 'package.json' - 'yarn.lock' - 'tsconfig.json' - 'turbo.json' deploy: - space/** - 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@v3 - name: Set up Python uses: actions/setup-python@v4 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-web: needs: get-changed-files if: needs.get-changed-files.outputs.web_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: 18.x - run: yarn install - run: yarn lint --filter=web lint-space: needs: get-changed-files if: needs.get-changed-files.outputs.space_changed == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: 18.x - run: yarn install - run: yarn lint --filter=space build-web: needs: lint-web runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: 18.x - run: yarn install - run: yarn build --filter=web build-space: needs: lint-space runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: 18.x - run: yarn install - run: yarn build --filter=space