name: Continuous Integration on: pull_request: branches: - main jobs: build-lint: name: Build and lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: 14.15.4 - name: Setup build cache uses: actions/cache@v2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-node- - name: Install dependencies run: npm ci - name: Compile TypeScript run: npm run compile - name: Run linter run: npm run lint build-docker: name: Build Docker image runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Run paths filter uses: dorny/paths-filter@v2 id: filter with: filters: | build: - 'Dockerfile' - 'package*.json' - name: Build Docker image if: steps.filter.outputs.build == 'true' run: docker build .