Der CI-Checkout
CI-Umgebungen checken Ihren Code bei jedem Job frisch aus.
Shallow Clone fur Geschwindigkeit
git clone --depth=1 https://example.com/repo.git
- uses: actions/checkout@v4
with:
fetch-depth: 1
git fetch --unshallow
Sparse Checkout fur Monorepos
git sparse-checkout init --cone
git sparse-checkout set apps/web shared/ui
.git uber Jobs cachen
cache:
key: git-$CI_COMMIT_REF_SLUG
paths:
- .git/
Authentifiziertes Klonen
git clone https://oauth2:${TOKEN}@gitlab.com/group/repo.git
Reproduzierbare Builds
npm ci
cargo build --locked
Geanderte Dateien erkennen
BASE=$(git merge-base origin/main HEAD)
CHANGED=$(git diff --name-only $BASE)
if echo "$CHANGED" | grep -q '^apps/web/'; then
./scripts/test-web.sh
fi
Tag-getriebene Workflows
"Build bei jedem Push" von "Publish bei Tag" trennen.
Geheimnisse aus Git heraus
- uses: gitleaks/gitleaks-action@v2
Den Build taggen
SHA=$(git rev-parse --short HEAD)
docker build -t myapp:$SHA -t myapp:latest .