123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- ---
- # Runs various linter 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 }}
- # clangformat: ${{ steps.clangformat.outputs.run }}
- flake8: ${{ steps.flake8.outputs.run }}
- golangci-lint: ${{ steps.golangci-lint.outputs.run }}
- hadolint: ${{ steps.hadolint.outputs.run }}
- shellcheck: ${{ steps.shellcheck.outputs.run }}
- yamllint: ${{ steps.yamllint.outputs.run }}
- steps:
- - name: Clone repository
- uses: actions/checkout@v4
- 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 clang-format
- # id: clangformat
- # run: |
- # if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/clang-format') }}" = "true" ]; then
- # echo "run=true" >> "${GITHUB_OUTPUT}"
- # elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '\.cpp$|\.cxx$|\.c$|\.hpp$|\.hxx$|\.h$' ; then
- # echo "run=true" >> "${GITHUB_OUTPUT}"
- # echo 'C/C++ code has changed, need to run clang-format.'
- # else
- # echo "run=false" >> "${GITHUB_OUTPUT}"
- # fi
- - name: Check files for flake8
- id: flake8
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/flake8') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '.*\.py' ; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'Python files have changed, need to run flake8.'
- else
- echo "run=false" >> "${GITHUB_OUTPUT}"
- fi
- - name: Check files for golangci-lint
- id: golangci-lint
- run: |
- if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/golangci-lint') }}" = "true" ]; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- elif git diff --name-only origin/"${{ github.base_ref }}" HEAD -- | grep -Eq '.*\.go'; then
- echo "run=true" >> "${GITHUB_OUTPUT}"
- echo 'Go code has changed, need to run golangci-lint.'
- 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@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Run actionlint
- uses: reviewdog/action-actionlint@v1
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- reporter: github-pr-check
- # clang-format:
- # name: clang-format
- # needs: prep-review
- # if: needs.prep-review.outputs.clangformat == 'true'
- # runs-on: ubuntu-latest
- # steps:
- # - name: Git clone repository
- # uses: actions/checkout@v4
- # with:
- # submodules: false
- # fetch-depth: 0
- # - name: Check for label
- # id: label
- # run: |
- # if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/clang-format') }}" = "true" ]; then
- # echo 'check-all=true' >> "${GITHUB_OUTPUT}"
- # else
- # echo 'check-all=false' >> "${GITHUB_OUTPUT}"
- # fi
- # - name: Run clang-format
- # run: |
- # if [ "${{ steps.label.outputs.check-all }}" == 'true' ]; then
- # find . -regex '.*\.\(c\|cpp\|cxx\|h\|hpp\|hxx\)$' -exec clang-format -i --style=file '{}' \;
- # else
- # git diff --name-only origin/${{ github.base_ref }} HEAD | grep -E '\.cpp$|\.cxx$|\.c$|\.hpp$|\.hxx$|\.h$' | \
- # xargs -n 1 -r clang-format -i --style=file
- # fi
- # git status --porcelain=v1 > /tmp/porcelain
- # if [ -s /tmp/porcelain ]; then
- # cat /tmp/porcelain
- # exit 1
- # fi
- flake8:
- name: flake8
- needs: prep-review
- if: needs.prep-review.outputs.flake8 == 'true'
- runs-on: ubuntu-latest
- steps:
- - name: Git clone repository
- uses: actions/checkout@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Setup Python
- uses: actions/setup-python@v5
- with:
- python-version: "3.10"
- - name: Run flake8
- uses: reviewdog/action-flake8@v3
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- reporter: github-pr-check
- golangci-lint:
- name: golangci-lint
- needs: prep-review
- if: needs.prep-review.outputs.golangci-lint == 'true'
- strategy:
- matrix:
- tree:
- - src/go
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Run golangci-lint
- uses: reviewdog/action-golangci-lint@v2
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- reporter: github-pr-check
- golangci_lint_flags: '--timeout=10m'
- workdir: ${{ matrix.tree }}
- 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@v4
- 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@v4
- 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/*
- packaging/makeself/makeself.sh
- packaging/makeself/makeself-header.sh
- ./fluent-bit/*
- 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@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Run yamllint
- uses: reviewdog/action-yamllint@v1
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- reporter: github-pr-check
|