Files
doc-exports/.gitea/workflows/yaml-lint.yml

104 lines
3.2 KiB
YAML

# .gitea/workflows/yaml-lint.yml
name: YAML Lint
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
yaml-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
# fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }}
- name: Dump Gitea env
run: |
env | sort | grep GITEA
- name: Get base branch name
id: base
run: |
base_ref=$(jq -r '.pull_request.base.ref' "$GITEA_PATH")
echo "base_ref=$base_ref"
echo "${{ gitea.base_ref }}"
BASE_SHA="${{ gitea.event.pull_request.base.sha }}"
echo "Base SHA: $BASE_SHA"
# >> $GITHUB_OUTPUT
- name: Get changed files other method
id: changed-files
run: |
BASE_SHA="${{ gitea.event.pull_request.base.sha }}"
echo "Base SHA: $BASE_SHA"
git fetch origin $BASE_SHA
echo "changed_files=$(git diff --name-only ${BASE_SHA}...HEAD | xargs)" >> $GITHUB_OUTPUT
# - name: Get changed files
# id: changed-files
# run: |
# if ${{ github.event_name == 'pull_request' }}; then
# echo "changed_files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT
# else
# echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT
# fi
- name: List changed files
run: |
for file in ${{ steps.changed-files.outputs.changed_files }}; do
echo "$file was changed"
done
- name: Check presence of non-unicode characters
continue-on-error: true
run: |
for file in ${{ steps.changed-files.outputs.changed_files }}; do
if LC_ALL=C grep --color='auto' -P -n "[^\x00-\x7F]" $file &>/dev/null; then
echo "$file contains non-unicode characters!"
LC_ALL=C grep --color='auto' -P -n "[^\x00-\x7F]" $file
failed_job=true
fi
done
if [ "$failed_job" = true ] ; then
exit 1
fi
- name: Install yamllint
run: |
sudo apt-get update
sudo apt-get install -y yamllint
- name: Run yamllint on changed YAML files
run: |
set -e
BASE_SHA="${{ gitea.event.pull_request.base.sha }}"
echo "Base SHA: $BASE_SHA"
# Fetch base branch so git diff works in PRs
git fetch origin "$BASE_SHA"
# git fetch origin "${{ gitea.base_ref }}"
# Get changed YAML files
files=$(git diff --name-only "$BASE_SHA"...HEAD \
| grep -E '\.(yml|yaml)$' || true)
if [ -z "$files" ]; then
echo "No YAML files changed"
exit 0
fi
echo "Linting changed files:"
echo "$files"
for file in $files; do
echo "$file is being checked for yamllint issues."
yamllint -f parsable $file || \
{ failed_check=true ; echo "$file: detected yamllint errors!"; }
done
if [ "$failed_check" = true ]; then
exit 1
fi