Add CI for markdown and yaml #1

Merged
ilia merged 3 commits from ci into main 2025-12-30 22:34:39 -05:00
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 ## Status
This is an actively evolving notebook. Some sections may be incomplete or “work in progress”. This is an actively evolving notebook. Some sections may be incomplete or “work in progress”.