Add CI for markdown and yaml (#1)
All checks were successful
CI / skip-ci-check (push) Successful in 1m16s
CI / markdown-lint (push) Successful in 1m18s
CI / yaml-validate (push) Successful in 1m18s

Reviewed-on: #1
This commit is contained in:
ilia 2025-12-30 22:34:39 -05:00
parent b59907d491
commit 7c1cd5abc1
3 changed files with 101 additions and 2 deletions

97
.gitea/workflows/ci.yml Normal file
View File

@ -0,0 +1,97 @@
---
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
skip-ci-check:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.check.outputs.skip }}
steps:
- name: Checkout (for commit message)
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Skip check (@skipci in branch name or commit message)
id: check
shell: bash
run: |
set -euo pipefail
SKIP_PATTERN='@skipci'
# Branch name (works for push and PR on GitHub-compatible runners)
BRANCH_NAME="${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}"
# Commit message (best-effort; fall back to git)
COMMIT_MSG="${GITHUB_EVENT_HEAD_COMMIT_MESSAGE:-}"
if [ -z "${COMMIT_MSG}" ]; then
COMMIT_MSG="$(git log -1 --pretty=%B 2>/dev/null || true)"
fi
SKIP=0
if echo "${BRANCH_NAME}" | grep -qiF "${SKIP_PATTERN}"; then
echo "Skipping CI: branch name contains ${SKIP_PATTERN}"
SKIP=1
fi
if [ "${SKIP}" -eq 0 ] && [ -n "${COMMIT_MSG}" ]; then
if echo "${COMMIT_MSG}" | grep -qiF "${SKIP_PATTERN}"; then
echo "Skipping CI: commit message contains ${SKIP_PATTERN}"
SKIP=1
fi
fi
echo "skip=${SKIP}" >> "${GITHUB_OUTPUT}"
echo "Branch: ${BRANCH_NAME}"
echo "Skip CI: ${SKIP}"
markdown-lint:
needs: skip-ci-check
if: needs.skip-ci-check.outputs.should_skip != '1'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install markdownlint-cli2
shell: bash
run: |
set -euo pipefail
npm install -g markdownlint-cli2@0.14.0
- name: Lint markdown
shell: bash
run: |
set -euo pipefail
# Lint tracked markdown files only (avoid linting generated/vendor content)
git ls-files '*.md' | xargs -r markdownlint-cli2
yaml-validate:
needs: skip-ci-check
if: needs.skip-ci-check.outputs.should_skip != '1'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install yamllint
shell: bash
run: |
set -euo pipefail
python3 -m venv .venv
. .venv/bin/activate
pip install --no-cache-dir yamllint==1.35.1
- name: Lint YAML
shell: bash
run: |
set -euo pipefail
# Lint tracked YAML only (avoid .git and other noise)
. .venv/bin/activate
git ls-files '*.yml' '*.yaml' | xargs -r yamllint -d "{extends: default, rules: {document-start: disable, truthy: disable, line-length: disable}}"

4
.markdownlint-cli2.yaml Normal file
View File

@ -0,0 +1,4 @@
---
# Notes repo: long lines (IPs, commands, URLs) are common.
config:
MD013: false

View File

@ -21,5 +21,3 @@ Personal notes for my homelab: build logs, configs, and operational runbooks for
## Status
This is an actively evolving notebook. Some sections may be incomplete or “work in progress”.