95 lines
2.8 KiB
YAML
95 lines
2.8 KiB
YAML
# Tekton Git Clone Task for Bakery-IA CI/CD
|
|
# This task clones the source code repository
|
|
|
|
apiVersion: tekton.dev/v1beta1
|
|
kind: Task
|
|
metadata:
|
|
name: git-clone
|
|
namespace: tekton-pipelines
|
|
labels:
|
|
app.kubernetes.io/name: bakery-ia-cicd
|
|
app.kubernetes.io/component: source
|
|
spec:
|
|
workspaces:
|
|
- name: output
|
|
description: Workspace to clone the repository into
|
|
params:
|
|
- name: url
|
|
type: string
|
|
description: Repository URL to clone
|
|
- name: revision
|
|
type: string
|
|
description: Git revision to checkout
|
|
default: "main"
|
|
- name: depth
|
|
type: string
|
|
description: Git clone depth (0 for full history)
|
|
default: "1"
|
|
results:
|
|
- name: commit-sha
|
|
description: The commit SHA that was checked out
|
|
- name: commit-message
|
|
description: The commit message
|
|
steps:
|
|
- name: clone
|
|
image: alpine/git:2.43.0
|
|
script: |
|
|
#!/bin/sh
|
|
set -e
|
|
|
|
URL="$(params.url)"
|
|
REVISION="$(params.revision)"
|
|
DEPTH="$(params.depth)"
|
|
OUTPUT_PATH="$(workspaces.output.path)"
|
|
|
|
echo "============================================"
|
|
echo "Git Clone Task"
|
|
echo "============================================"
|
|
echo "URL: $URL"
|
|
echo "Revision: $REVISION"
|
|
echo "Depth: $DEPTH"
|
|
echo "============================================"
|
|
|
|
# Clone with depth for faster checkout
|
|
if [ "$DEPTH" = "0" ]; then
|
|
echo "Cloning full repository..."
|
|
git clone "$URL" "$OUTPUT_PATH"
|
|
else
|
|
echo "Cloning with depth $DEPTH..."
|
|
git clone --depth "$DEPTH" "$URL" "$OUTPUT_PATH"
|
|
fi
|
|
|
|
cd "$OUTPUT_PATH"
|
|
|
|
# Fetch the specific revision if needed
|
|
if [ "$REVISION" != "main" ] && [ "$REVISION" != "master" ]; then
|
|
echo "Fetching revision: $REVISION"
|
|
git fetch --depth 1 origin "$REVISION" 2>/dev/null || true
|
|
fi
|
|
|
|
# Checkout the revision
|
|
echo "Checking out: $REVISION"
|
|
git checkout "$REVISION" 2>/dev/null || git checkout "origin/$REVISION"
|
|
|
|
# Get commit info
|
|
COMMIT_SHA=$(git rev-parse HEAD)
|
|
COMMIT_MSG=$(git log -1 --pretty=format:"%s")
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo "Clone Complete"
|
|
echo "============================================"
|
|
echo "Commit: $COMMIT_SHA"
|
|
echo "Message: $COMMIT_MSG"
|
|
echo "============================================"
|
|
|
|
# Write results
|
|
echo -n "$COMMIT_SHA" > $(results.commit-sha.path)
|
|
echo -n "$COMMIT_MSG" > $(results.commit-message.path)
|
|
resources:
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi |