Skip to content

Merge pull request #459 from okp4/docs/add-semantic-release-badge #1331

Merge pull request #459 from okp4/docs/add-semantic-release-badge

Merge pull request #459 from okp4/docs/add-semantic-release-badge #1331

Workflow file for this run

name: Lint
on:
workflow_call:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: lint-${{ github.ref }}
cancel-in-progress: true
jobs:
lint-commits:
runs-on: ubuntu-22.04
if: github.actor != 'dependabot[bot]'
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Check commits
uses: wagoid/commitlint-github-action@v5
lint-markdown:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Lint regular markdown files
uses: avto-dev/markdown-lint@v1.5.0
with:
args: "**/*.md"
ignore: "CHANGELOG.md docs/**/*.md"
- name: Lint generated markdown files
uses: avto-dev/markdown-lint@v1.5.0
with:
args: "docs/**/*.md"
config: "docs/.markdownlint.yaml"
lint-yaml:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Lint yaml files
uses: ibiqlik/action-yamllint@v3.1.1
lint-json:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Lint json files
run: |
sudo apt install -y jsonlint
find ./ -type f -name "*.json" -exec sh -c '
for file do
if ! jsonlint-php -q "$file"; then
echo "❌ $file"
export FAILED=1
else
echo "βœ… $file"
fi
done
if [ "${FAILED}" = "1" ]; then
exit 1
fi
' sh {} +
lint-go:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Find changed go files
id: changed-go-files
uses: tj-actions/changed-files@v39.1.2
with:
files: |
**/*.go
go.mod
go.sum
- name: Setup Go environment
uses: actions/setup-go@v4.1.0
if: steps.changed-go-files.outputs.any_changed == 'true'
with:
go-version: "1.20"
cache: false
- name: Lint go code (golangci-lint)
uses: golangci/golangci-lint-action@v3
if: steps.changed-go-files.outputs.any_changed == 'true'
with:
version: v1.53
- name: Lint go code (gofumpt)
if: steps.changed-go-files.outputs.any_changed == 'true'
run: |
go install mvdan.cc/gofumpt@v0.4.0
if [ "$(gofumpt -l .)" != "" ]; then
echo "❌ Code is not gofumpt!"
exit 1
fi
echo "βœ… Code is gofumpt!"
analyze-go:
runs-on: ubuntu-22.04
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Find changed go files
id: changed-go-files
uses: tj-actions/changed-files@v39.1.2
with:
files: |
**/*.go
go.mod
go.sum
- name: Setup Go environment
uses: actions/setup-go@v4.1.0
with:
go-version: "1.20"
cache: false
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: "go"
- name: Autobuild project
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
lint-dockerfile:
runs-on: ubuntu-22.04
if: github.actor != 'dependabot[bot]'
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Lint dockerfile (hadolint)
uses: hadolint/hadolint-action@v3.1.0
with:
verbose: true
lint-proto:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Find changed proto files
id: changed-proto-files
uses: tj-actions/changed-files@v39.1.2
with:
files: |
proto/**/*.proto
- name: Lint proto files
if: steps.changed-proto-files.outputs.any_changed == 'true'
run: |
make lint-proto
lint-generated:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Setup Go environment
uses: actions/setup-go@v4.1.0
with:
go-version: "1.20"
- name: Generate command documentation
run: |
make doc-command
- name: Generate proto and documentation
run: |
make doc-proto
- name: Check Git diff in generated files (proto + docs)
run: |
if [[ $(git status -s | grep --fixed-strings -v "go.mod" | grep --fixed-strings -v "go.sum") != "" ]]; then
>&2 echo "❌ There is a diff between generated files and source code"
>&2 git status
exit 1
fi
lint-shell:
runs-on: ubuntu-22.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Lint shell scripts
uses: ludeeus/action-shellcheck@2.0.0
with:
scandir: .
version: "v0.9.0"
env:
SHELLCHECK_OPTS: -e SC2034