🤖 feat: simplify CI/CD structure and add Docker workflow
Some checks failed
Some checks failed
- Rename ci-cd.yaml to go-ci-cd.yaml for clarity - Add dockerimage.yaml workflow for Docker builds - Create Dockerfile for production deployment - Add comprehensive CI/CD documentation - Create contributor-quickstart.sh for easy validation - Update all scripts to handle both workflow files - Fix event triggers to run on all relevant pushes - Remove redundant YAML syntax validation - Improve workflow validation for Arcodange conventions BREAKING CHANGE: ci-cd.yaml renamed to go-ci-cd.yaml See scripts/cicd/README.md for complete documentation. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -6,69 +6,85 @@ set -e
|
||||
echo "🔍 Validating CI/CD Workflow"
|
||||
echo "================================"
|
||||
|
||||
# 1. Check workflow file exists
|
||||
if [ ! -f ".gitea/workflows/ci-cd.yaml" ]; then
|
||||
echo "❌ Workflow file not found: .gitea/workflows/ci-cd.yaml"
|
||||
exit 1
|
||||
fi
|
||||
# 1. Check workflow files exist
|
||||
WORKFLOW_FILES=(
|
||||
".gitea/workflows/go-ci-cd.yaml"
|
||||
".gitea/workflows/dockerimage.yaml"
|
||||
)
|
||||
|
||||
echo "✅ Workflow file found"
|
||||
|
||||
# 2. Validate YAML syntax
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
if ! yq eval '.' .gitea/workflows/ci-cd.yaml > /dev/null 2>&1; then
|
||||
echo "❌ Invalid YAML syntax"
|
||||
yq eval '.' .gitea/workflows/ci-cd.yaml || true
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "❌ Workflow file not found: $file"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ YAML syntax valid"
|
||||
echo "✅ Workflow file found: $file"
|
||||
done
|
||||
|
||||
# 2. Validate YAML syntax for all workflows
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
if ! yq eval '.' "$file" > /dev/null 2>&1; then
|
||||
echo "❌ Invalid YAML syntax in: $file"
|
||||
yq eval '.' "$file" || true
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ YAML syntax valid: $file"
|
||||
done
|
||||
else
|
||||
echo "⚠️ yq not installed, skipping YAML validation"
|
||||
fi
|
||||
|
||||
# 3. YAML Linting with custom config
|
||||
# 3. YAML Linting with custom config for all workflows
|
||||
if command -v yamllint >/dev/null 2>&1; then
|
||||
if [ -f ".yamllint.yaml" ]; then
|
||||
yamllint -c .yamllint.yaml .gitea/workflows/ci-cd.yaml
|
||||
else
|
||||
yamllint .gitea/workflows/ci-cd.yaml
|
||||
fi
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
if [ -f ".yamllint.yaml" ]; then
|
||||
yamllint -c .yamllint.yaml "$file"
|
||||
else
|
||||
yamllint "$file"
|
||||
fi
|
||||
done
|
||||
elif docker info >/dev/null 2>&1; then
|
||||
if [ -f ".yamllint.yaml" ]; then
|
||||
docker run --rm -v $(pwd):/workspace -w /workspace pipelinecomponents/yamllint:latest \
|
||||
yamllint -c .yamllint.yaml .gitea/workflows/ci-cd.yaml
|
||||
else
|
||||
docker run --rm -v $(pwd):/workspace -w /workspace pipelinecomponents/yamllint:latest \
|
||||
yamllint .gitea/workflows/ci-cd.yaml
|
||||
fi
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
if [ -f ".yamllint.yaml" ]; then
|
||||
docker run --rm -v $(pwd):/workspace -w /workspace pipelinecomponents/yamllint:latest \
|
||||
yamllint -c .yamllint.yaml "$file"
|
||||
else
|
||||
docker run --rm -v $(pwd):/workspace -w /workspace pipelinecomponents/yamllint:latest \
|
||||
yamllint "$file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "⚠️ Neither yamllint nor docker available, skipping linting"
|
||||
fi
|
||||
|
||||
# 3. Check required fields
|
||||
MISSING_FIELDS=()
|
||||
# 3. Check required fields for all workflows
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
MISSING_FIELDS=()
|
||||
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
workflow_name=$(basename "$file" .yaml)
|
||||
|
||||
if [ -z "$(yq eval '.name' "$file" 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("name")
|
||||
fi
|
||||
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
if [ -z "$(yq eval '.name' .gitea/workflows/ci-cd.yaml 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("name")
|
||||
fi
|
||||
if [ -z "$(yq eval '.on' "$file" 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("on")
|
||||
fi
|
||||
|
||||
if [ -z "$(yq eval '.on' .gitea/workflows/ci-cd.yaml 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("on")
|
||||
fi
|
||||
if [ -z "$(yq eval '.jobs' "$file" 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("jobs")
|
||||
fi
|
||||
|
||||
if [ -z "$(yq eval '.jobs' .gitea/workflows/ci-cd.yaml 2>/dev/null)" ]; then
|
||||
MISSING_FIELDS+=("jobs")
|
||||
if [ ${#MISSING_FIELDS[@]} -gt 0 ]; then
|
||||
echo "❌ Missing required fields in $workflow_name: ${MISSING_FIELDS[*]}"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ All required fields present in $workflow_name"
|
||||
else
|
||||
echo "⚠️ yq not installed, skipping field validation for $file"
|
||||
fi
|
||||
|
||||
if [ ${#MISSING_FIELDS[@]} -gt 0 ]; then
|
||||
echo "❌ Missing required fields: ${MISSING_FIELDS[*]}"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ All required fields present"
|
||||
else
|
||||
echo "⚠️ yq not installed, skipping field validation"
|
||||
fi
|
||||
done
|
||||
|
||||
# 4. Check jobs structure
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
@@ -118,10 +134,17 @@ fi
|
||||
echo ""
|
||||
echo "🎉 Workflow Validation Successful!"
|
||||
echo "================================"
|
||||
echo "📁 Location: .gitea/workflows/ci-cd.yaml"
|
||||
echo "📁 Workflows validated:"
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
echo " - $file"
|
||||
done
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
JOBS=$(yq eval '.jobs | keys | join(", ")' .gitea/workflows/ci-cd.yaml 2>/dev/null || echo 'Unable to parse')
|
||||
echo "🔧 Jobs: $JOBS"
|
||||
echo "🔧 Summary:"
|
||||
for file in "${WORKFLOW_FILES[@]}"; do
|
||||
workflow_name=$(basename "$file" .yaml)
|
||||
JOBS=$(yq eval '.jobs | keys | join(", ")' "$file" 2>/dev/null || echo 'Unable to parse')
|
||||
echo " - $workflow_name: $JOBS"
|
||||
done
|
||||
else
|
||||
echo "🔧 Jobs: yq not installed"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user