--- # Runs various ReviewDog based checks against PR with suggested changes to improve quality name: Review on: pull_request: null env: DO_NOT_TRACK: 1 concurrency: group: review-${{ github.ref }} cancel-in-progress: true jobs: prep-review: name: Prepare Review Jobs runs-on: ubuntu-latest outputs: actionlint: ${{ steps.actionlint.outputs.run }} eslint: ${{ steps.eslint.outputs.run }} hadolint: ${{ steps.hadolint.outputs.run }} shellcheck: ${{ steps.shellcheck.outputs.run }} yamllint: ${{ steps.yamllint.outputs.run }} steps: - name: Clone repository uses: actions/checkout@v2 with: submodules: recursive fetch-depth: 0 - name: Check files for actionlint id: actionlint run: | if git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '\.github/workflows/.*' ; then echo '::set-output name=run::true' echo 'GitHub Actions workflows have changed, need to run actionlint.' else echo '::set-output name=run::false' fi - name: Check files for eslint id: eslint run: | if git diff --name-only origin/${{ github.base_ref }} HEAD | grep -v "web/gui/dashboard" | grep -Eq '.*\.js|node\.d\.plugin\.in' ; then echo '::set-output name=run::true' echo 'JS files have changed, need to run ESLint.' else echo '::set-output name=run::false' fi - name: Check files for hadolint id: hadolint run: | if git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*Dockerfile.*' ; then echo '::set-output name=run::true' echo 'Dockerfiles have changed, need to run Hadolint.' else echo '::set-output name=run::false' fi - name: Check files for shellcheck id: shellcheck run: | if git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*\.sh.*' ; then echo '::set-output name=run::true' echo 'Shell scripts have changed, need to run shellcheck.' else echo '::set-output name=run::false' fi - name: Check files for yamllint id: yamllint run: | if git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*\.ya?ml|python\.d/.*\.conf' ; then echo '::set-output name=run::true' echo 'YAML files have changed, need to run yamllint.' else echo '::set-output name=run::false' fi actionlint: name: actionlint needs: prep-review if: needs.prep-review.outputs.actionlint == 'true' runs-on: ubuntu-latest steps: - name: Git clone repository uses: actions/checkout@v2 with: submodules: recursive fetch-depth: 0 - name: Run actionlint uses: reviewdog/action-actionlint@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check eslint: name: eslint needs: prep-review if: needs.prep-review.outputs.eslint == 'true' runs-on: ubuntu-latest steps: - name: Git clone repository uses: actions/checkout@v2 with: submodules: recursive fetch-depth: 0 - name: Run eslint uses: reviewdog/action-eslint@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check eslint_flags: '.' hadolint: name: hadolint needs: prep-review if: needs.prep-review.outputs.hadolint == 'true' runs-on: ubuntu-latest steps: - name: Git clone repository uses: actions/checkout@v2 with: fetch-depth: 0 - name: Run hadolint uses: reviewdog/action-hadolint@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check shellcheck: name: shellcheck needs: prep-review if: needs.prep-review.outputs.shellcheck == 'true' runs-on: ubuntu-latest steps: - name: Git clone repository uses: actions/checkout@v2 with: submodules: recursive fetch-depth: 0 - name: Run shellcheck uses: reviewdog/action-shellcheck@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check path: "." pattern: "*.sh*" exclude: "./.git/*" yamllint: name: yamllint needs: prep-review if: needs.prep-review.outputs.yamllint == 'true' runs-on: ubuntu-latest steps: - name: Git clone repository uses: actions/checkout@v2 with: submodules: recursive fetch-depth: 0 - name: Run yamllint uses: reviewdog/action-yamllint@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check