Files
ci/checkout/action.yml
T

78 lines
2.4 KiB
YAML
Raw Normal View History

# tinqs/ci/checkout — Tinqs Studio CI
# Clones a repo from tinqs.com (self-hosted Gitea) using plain git.
# Supports depth control, branch/tag selection, token auth, and sparse checkout.
# Composite action — runs directly on the host, no Node.js runtime needed.
# Author: Ozan + Claude Code — 2026-05-22
name: 'Tinqs Checkout'
description: 'Clone a Gitea repository'
inputs:
repository:
description: 'Repository (owner/repo)'
default: '${{ github.repository }}'
ref:
description: 'Branch or tag to checkout'
default: '${{ github.ref_name }}'
depth:
description: 'Clone depth (0 = full)'
default: '1'
path:
description: 'Directory to clone into'
default: '.'
token:
description: 'Gitea access token (for private repos)'
default: ''
sparse:
description: 'Space-separated paths for sparse checkout (empty = full clone)'
default: ''
runs:
using: 'composite'
steps:
- run: |
REPO="${{ inputs.repository }}"
REF="${{ inputs.ref }}"
DEPTH="${{ inputs.depth }}"
TARGET="${{ inputs.path }}"
TOKEN="${{ inputs.token }}"
SPARSE="${{ inputs.sparse }}"
if [ "$DEPTH" = "0" ]; then
DEPTH_FLAG=""
else
DEPTH_FLAG="--depth $DEPTH"
fi
if [ -n "$TOKEN" ]; then
URL="https://token:${TOKEN}@tinqs.com/${REPO}.git"
else
URL="https://tinqs.com/${REPO}.git"
fi
if [ -n "$SPARSE" ]; then
# Sparse checkout — only fetch specified paths
mkdir -p "$TARGET" && cd "$TARGET"
git init
git remote add origin "$URL"
git config core.sparseCheckout true
for P in $SPARSE; do
echo "$P" >> .git/info/sparse-checkout
done
# Also always include go.mod/go.sum for Go builds
echo "go.mod" >> .git/info/sparse-checkout
echo "go.sum" >> .git/info/sparse-checkout
git fetch $DEPTH_FLAG origin "$REF"
git checkout FETCH_HEAD
echo "Sparse checkout ${REPO}@${REF} ($(echo $SPARSE | wc -w) paths)"
else
# Full clone
if [ "$TARGET" = "." ]; then
git clone $DEPTH_FLAG --branch "$REF" "$URL" .
else
git clone $DEPTH_FLAG --branch "$REF" "$URL" "$TARGET"
fi
echo "Checked out ${REPO}@${REF}"
fi
shell: bash