123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- ---
- # Runs various ReviewDog based checks against PR with suggested changes to improve quality
- name: Review
- on:
- pull_request:
- types: [opened, reopened, labeled, synchronize]
- env:
- DISABLE_TELEMETRY: 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@v3
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Check files for actionlint
- id: actionlint
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/actionlint') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '\.github/workflows/.*' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'GitHub Actions workflows have changed, need to run actionlint.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- fi
- - name: Check files for eslint
- id: eslint
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/eslint') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -v "web/gui/dashboard" | grep -Eq '.*\.js|node\.d\.plugin\.in' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'JS files have changed, need to run ESLint.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- fi
- - name: Check files for hadolint
- id: hadolint
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/hadolint') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*Dockerfile.*' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'Dockerfiles have changed, need to run Hadolint.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- fi
- - name: Check files for shellcheck
- id: shellcheck
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/shellcheck') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*\.sh.*' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'Shell scripts have changed, need to run shellcheck.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- fi
- - name: Check files for yamllint
- id: yamllint
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/yamllint') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*\.ya?ml|python\.d/.*\.conf' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'YAML files have changed, need to run yamllint.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- 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@v3
- 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@v3
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Install eslint
- run: npm install eslint -D
- - 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@v3
- 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@v3
- 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@v3
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Run yamllint
- uses: reviewdog/action-yamllint@v1
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- reporter: github-pr-check
|