mirror of
https://github.com/netdata/netdata.git
synced 2025-03-14 13:12:55 +00:00

* restruture go.d * update gitignore * update ci files * update gen_docs_integrations.py * update link in go.d conf files * update go.d modules metadata files * update metadata files * update packaging * add log files * integrations commit * update get-go-version.py * go fmt * fix packaging * update go.d readme --------- Co-authored-by: Fotis Voutsas <fotis@netdata.cloud>
254 lines
8.9 KiB
YAML
254 lines
8.9 KiB
YAML
---
|
|
# 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
|