Skip to content

Add azure.ai.training extension #198

Add azure.ai.training extension

Add azure.ai.training extension #198

name: validate-go-version
on:
pull_request:
paths:
- "**/go.mod"
- "**/Dockerfile"
- ".devcontainer/devcontainer.json"
- "eng/pipelines/templates/steps/setup-go.yml"
- ".github/workflows/validate-go-version.yml"
branches: [main]
permissions:
contents: read
jobs:
check-go-version-consistency:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Validate Go version consistency
run: |
# Source of truth: cli/azd/go.mod
EXPECTED=$(grep -m1 '^go ' cli/azd/go.mod | awk '{print $2}')
echo "Expected Go version (from cli/azd/go.mod): $EXPECTED"
ERRORS=0
# Check all go.mod files
echo ""
echo "Checking go.mod files..."
for f in $(find cli/azd -name 'go.mod'); do
VERSION=$(grep -m1 '^go ' "$f" | awk '{print $2}')
if [ "$VERSION" != "$EXPECTED" ]; then
echo "::error file=$f::Go version mismatch: found '$VERSION', expected '$EXPECTED'"
ERRORS=$((ERRORS + 1))
else
echo " OK: $f ($VERSION)"
fi
done
# Check ADO pipeline template
echo ""
echo "Checking ADO pipeline template..."
ADO_FILE="eng/pipelines/templates/steps/setup-go.yml"
if [ -f "$ADO_FILE" ]; then
ADO_VERSION=$(grep -m1 'GoVersion:' "$ADO_FILE" | awk '{print $2}')
if [ "$ADO_VERSION" != "$EXPECTED" ]; then
echo "::error file=$ADO_FILE::GoVersion mismatch: found '$ADO_VERSION', expected '$EXPECTED'"
ERRORS=$((ERRORS + 1))
else
echo " OK: $ADO_FILE ($ADO_VERSION)"
fi
fi
# Check Dockerfiles referencing golang:<version> base images
echo ""
echo "Checking Dockerfiles..."
for f in $(find cli/azd -name 'Dockerfile'); do
DOCKER_VERSION=$(grep -oP 'golang:\K[\d.]+' "$f" | head -1)
if [ -n "$DOCKER_VERSION" ] && [ "$DOCKER_VERSION" != "$EXPECTED" ]; then
echo "::error file=$f::Dockerfile golang version mismatch: found '$DOCKER_VERSION', expected '$EXPECTED'"
ERRORS=$((ERRORS + 1))
elif [ -n "$DOCKER_VERSION" ]; then
echo " OK: $f (golang:$DOCKER_VERSION)"
fi
done
# Check devcontainer.json Go feature version
echo ""
echo "Checking devcontainer.json..."
DEVCONTAINER=".devcontainer/devcontainer.json"
if [ -f "$DEVCONTAINER" ]; then
DC_VERSION=$(grep -A1 'devcontainers/features/go' "$DEVCONTAINER" | grep -oP '"version":\s*"\K[\d.]+')
if [ -n "$DC_VERSION" ] && [ "$DC_VERSION" != "$EXPECTED" ]; then
echo "::error file=$DEVCONTAINER::devcontainer Go version mismatch: found '$DC_VERSION', expected '$EXPECTED'"
ERRORS=$((ERRORS + 1))
elif [ -n "$DC_VERSION" ]; then
echo " OK: $DEVCONTAINER ($DC_VERSION)"
fi
fi
echo ""
if [ "$ERRORS" -gt 0 ]; then
echo "::error::$ERRORS Go version mismatch(es) found. Run 'pwsh eng/scripts/Update-GoVersion.ps1 -NewVersion $EXPECTED' to fix."
exit 1
fi
echo "All Go versions are consistent ($EXPECTED)."