6969 security-scans-enabled :
7070 description : " Whether security scans are enabled"
7171 value : ${{ jobs.setup-config.outputs.security-scans-enabled }}
72+ nancy-enabled :
73+ description : " Whether Nancy dependency checks are enabled"
74+ value : ${{ jobs.setup-config.outputs.nancy-enabled }}
75+ govulncheck-enabled :
76+ description : " Whether govulncheck vulnerability scanning is enabled"
77+ value : ${{ jobs.setup-config.outputs.govulncheck-enabled }}
78+ gitleaks-enabled :
79+ description : " Whether Gitleaks secret scanning is enabled"
80+ value : ${{ jobs.setup-config.outputs.gitleaks-enabled }}
81+ is-release-run :
82+ description : " Whether this is a release-eligible run (tag starting with v)"
83+ value : ${{ jobs.setup-config.outputs.is-release-run }}
7284 start-epoch :
7385 description : " Workflow start epoch time"
7486 value : ${{ jobs.setup-config.outputs.start-epoch }}
@@ -110,6 +122,10 @@ jobs:
110122 race-detection-enabled : ${{ steps.config.outputs.race-detection-enabled }}
111123 secondary-runner : ${{ steps.config.outputs.secondary-runner }}
112124 security-scans-enabled : ${{ steps.config.outputs.security-scans-enabled }}
125+ nancy-enabled : ${{ steps.config.outputs.nancy-enabled }}
126+ govulncheck-enabled : ${{ steps.config.outputs.govulncheck-enabled }}
127+ gitleaks-enabled : ${{ steps.config.outputs.gitleaks-enabled }}
128+ is-release-run : ${{ steps.config.outputs.is-release-run }}
113129 start-epoch : ${{ steps.timer.outputs.start-epoch }}
114130 start-time : ${{ steps.timer.outputs.start-time }}
115131 static-analysis-enabled : ${{ steps.config.outputs.static-analysis-enabled }}
@@ -284,10 +300,26 @@ jobs:
284300 echo "go-lint-enabled=${{ env.ENABLE_GO_LINT }}" >> $GITHUB_OUTPUT
285301 echo "yaml-lint-enabled=${{ env.ENABLE_YAML_LINT }}" >> $GITHUB_OUTPUT
286302 echo "race-detection-enabled=${{ env.ENABLE_RACE_DETECTION }}" >> $GITHUB_OUTPUT
287- echo "security-scans-enabled=${{ env.ENABLE_SECURITY_SCANS }}" >> $GITHUB_OUTPUT
303+ # Security scans - enable if any individual tool is enabled
304+ if [[ "${{ env.ENABLE_SECURITY_SCAN_NANCY }}" == "true" || "${{ env.ENABLE_SECURITY_SCAN_GOVULNCHECK }}" == "true" || "${{ env.ENABLE_SECURITY_SCAN_GITLEAKS }}" == "true" ]]; then
305+ echo "security-scans-enabled=true" >> $GITHUB_OUTPUT
306+ else
307+ echo "security-scans-enabled=false" >> $GITHUB_OUTPUT
308+ fi
309+ echo "nancy-enabled=${{ env.ENABLE_SECURITY_SCAN_NANCY }}" >> $GITHUB_OUTPUT
310+ echo "govulncheck-enabled=${{ env.ENABLE_SECURITY_SCAN_GOVULNCHECK }}" >> $GITHUB_OUTPUT
311+ echo "gitleaks-enabled=${{ env.ENABLE_SECURITY_SCAN_GITLEAKS }}" >> $GITHUB_OUTPUT
288312 echo "static-analysis-enabled=${{ env.ENABLE_STATIC_ANALYSIS }}" >> $GITHUB_OUTPUT
289313 echo "fuzz-testing-enabled=${{ env.ENABLE_FUZZ_TESTING }}" >> $GITHUB_OUTPUT
290314
315+ # Detect if this is a release run
316+ if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
317+ echo "is-release-run=true" >> $GITHUB_OUTPUT
318+ echo "🚀 Release detected: Tag ${{ github.ref_name }}"
319+ else
320+ echo "is-release-run=false" >> $GITHUB_OUTPUT
321+ fi
322+
291323 # ————————————————————————————————————————————————————————————————
292324 # Build the final summary of the configuration
293325 # ————————————————————————————————————————————————————————————————
@@ -310,26 +342,30 @@ jobs:
310342 echo "_Generated at: ${SUMMARY_TIME}_" >> $GITHUB_STEP_SUMMARY
311343 echo "" >> $GITHUB_STEP_SUMMARY
312344
313- # Environment Overview
314- echo "## 📊 Environment Overview" >> $GITHUB_STEP_SUMMARY
315- echo "- **Total Environment Variables Loaded**: $ENV_COUNT" >> $GITHUB_STEP_SUMMARY
316- echo "- **Configuration Source**: \`.github/.env.shared\`" >> $GITHUB_STEP_SUMMARY
317- echo "- **Workflow Start Time**: ${{ steps.timer.outputs.start-time }}" >> $GITHUB_STEP_SUMMARY
318- echo "" >> $GITHUB_STEP_SUMMARY
319-
320- # All Environment Variables
321- echo "## 🔍 Loaded Environment Variables" >> $GITHUB_STEP_SUMMARY
322- echo "<details>" >> $GITHUB_STEP_SUMMARY
323- echo "<summary>Click to expand all $ENV_COUNT environment variables</summary>" >> $GITHUB_STEP_SUMMARY
324- echo "" >> $GITHUB_STEP_SUMMARY
325- echo "| Variable | Value |" >> $GITHUB_STEP_SUMMARY
345+ # Workflow Trigger Information
346+ echo "## 🎯 Workflow Trigger" >> $GITHUB_STEP_SUMMARY
347+ echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
326348 echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
349+ echo "| **Trigger Type** | \`${{ github.event_name }}\` |" >> $GITHUB_STEP_SUMMARY
350+ echo "| **Reference** | \`${{ github.ref }}\` |" >> $GITHUB_STEP_SUMMARY
351+ echo "| **Branch/Tag** | \`${{ github.ref_name }}\` |" >> $GITHUB_STEP_SUMMARY
352+ echo "| **Is Tag Push** | $([ "${{ startsWith(github.ref, 'refs/tags/') }}" == "true" ] && echo "✅ Yes" || echo "❌ No") |" >> $GITHUB_STEP_SUMMARY
353+ echo "| **Is Release Eligible** | $([ "${{ startsWith(github.ref, 'refs/tags/v') }}" == "true" ] && echo "🚀 **Yes - Release will run if tests pass**" || echo "❌ No") |" >> $GITHUB_STEP_SUMMARY
354+ echo "" >> $GITHUB_STEP_SUMMARY
327355
328- # Sort and display all env vars
329- echo "$ENV_JSON" | jq -r 'to_entries | sort_by(.key) | .[] | "| **\(.key)** | `\(.value)` |"' >> $GITHUB_STEP_SUMMARY
356+ # Configuration Statistics (moved up for overview)
357+ echo "## 📈 Configuration Overview" >> $GITHUB_STEP_SUMMARY
358+ ENABLED_FEATURES=$(echo "$ENV_JSON" | jq -r '[to_entries | .[] | select(.key | startswith("ENABLE_")) | select(.value == "true")] | length')
359+ DISABLED_FEATURES=$(echo "$ENV_JSON" | jq -r '[to_entries | .[] | select(.key | startswith("ENABLE_")) | select(.value == "false")] | length')
360+ MATRIX_COUNT=$(echo "$MATRIX_JSON" | jq '.include | length')
330361
331- echo "" >> $GITHUB_STEP_SUMMARY
332- echo "</details>" >> $GITHUB_STEP_SUMMARY
362+ echo "- **Workflow Start Time**: ${{ steps.timer.outputs.start-time }}" >> $GITHUB_STEP_SUMMARY
363+ echo "- **Total Environment Variables**: $ENV_COUNT (from \`.github/.env.shared\`)" >> $GITHUB_STEP_SUMMARY
364+ echo "- **Enabled Features**: $ENABLED_FEATURES" >> $GITHUB_STEP_SUMMARY
365+ echo "- **Disabled Features**: $DISABLED_FEATURES" >> $GITHUB_STEP_SUMMARY
366+ echo "- **Test Matrix Combinations**: $MATRIX_COUNT" >> $GITHUB_STEP_SUMMARY
367+ echo "- **Unique Go Versions**: $(echo "$UNIQUE_GO_VERSIONS" | jq 'length')" >> $GITHUB_STEP_SUMMARY
368+ echo "- **Runner Operating Systems**: $([ "${{ env.PRIMARY_RUNNER }}" == "${{ env.SECONDARY_RUNNER }}" ] && echo "1" || echo "2")" >> $GITHUB_STEP_SUMMARY
333369 echo "" >> $GITHUB_STEP_SUMMARY
334370
335371 # Core Configuration
@@ -343,6 +379,17 @@ jobs:
343379 echo "| **Unique Go Versions** | $UNIQUE_GO_VERSIONS | Deduplicated list of Go versions |" >> $GITHUB_STEP_SUMMARY
344380 echo "" >> $GITHUB_STEP_SUMMARY
345381
382+ # Test Matrix
383+ echo "## 🧪 Generated Test Matrix" >> $GITHUB_STEP_SUMMARY
384+ echo "**Total test configurations**: $MATRIX_COUNT" >> $GITHUB_STEP_SUMMARY
385+ echo "" >> $GITHUB_STEP_SUMMARY
386+ echo "| # | OS | Go Version | Configuration Name | Fuzz Testing |" >> $GITHUB_STEP_SUMMARY
387+ echo "|---|----|-----------|--------------------|--------------|" >> $GITHUB_STEP_SUMMARY
388+
389+ echo "$MATRIX_JSON" | jq -r '.include | to_entries | .[] | "| \(.key + 1) | \(.value.os) | \(.value["go-version"]) | \(.value.name) | \(if .value["run-fuzz"] then "✅ Yes" else "❌ No" end) |"' >> $GITHUB_STEP_SUMMARY
390+
391+ echo "" >> $GITHUB_STEP_SUMMARY
392+
346393 # Feature Flags
347394 echo "## 🚀 Feature Flags" >> $GITHUB_STEP_SUMMARY
348395 echo "| Feature | Status | Impact |" >> $GITHUB_STEP_SUMMARY
@@ -353,7 +400,9 @@ jobs:
353400 echo "| **Go Linting** | $([ "${{ env.ENABLE_GO_LINT }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | golangci-lint will $([ "${{ env.ENABLE_GO_LINT }}" == "true" ] && echo "analyze code quality" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
354401 echo "| **YAML Linting** | $([ "${{ env.ENABLE_YAML_LINT }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | prettier will $([ "${{ env.ENABLE_YAML_LINT }}" == "true" ] && echo "validate YAML formatting" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
355402 echo "| **Race Detection** | $([ "${{ env.ENABLE_RACE_DETECTION }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Tests will $([ "${{ env.ENABLE_RACE_DETECTION }}" == "true" ] && echo "run with -race flag" || echo "run without race detection") |" >> $GITHUB_STEP_SUMMARY
356- echo "| **Security Scans** | $([ "${{ env.ENABLE_SECURITY_SCANS }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Security tools will $([ "${{ env.ENABLE_SECURITY_SCANS }}" == "true" ] && echo "scan for vulnerabilities" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
403+ echo "| **Nancy (Dependency Checks)** | $([ "${{ env.ENABLE_SECURITY_SCAN_NANCY }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Nancy will $([ "${{ env.ENABLE_SECURITY_SCAN_NANCY }}" == "true" ] && echo "scan dependencies for vulnerabilities" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
404+ echo "| **Govulncheck (Go Vuln Scan)** | $([ "${{ env.ENABLE_SECURITY_SCAN_GOVULNCHECK }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | govulncheck will $([ "${{ env.ENABLE_SECURITY_SCAN_GOVULNCHECK }}" == "true" ] && echo "scan for Go vulnerabilities" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
405+ echo "| **Gitleaks (Secret Scan)** | $([ "${{ env.ENABLE_SECURITY_SCAN_GITLEAKS }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Gitleaks will $([ "${{ env.ENABLE_SECURITY_SCAN_GITLEAKS }}" == "true" ] && echo "scan for leaked secrets" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
357406 echo "| **Static Analysis** | $([ "${{ env.ENABLE_STATIC_ANALYSIS }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Static analysis will $([ "${{ env.ENABLE_STATIC_ANALYSIS }}" == "true" ] && echo "check for code issues" || echo "be skipped") |" >> $GITHUB_STEP_SUMMARY
358407 echo "" >> $GITHUB_STEP_SUMMARY
359408
@@ -365,20 +414,6 @@ jobs:
365414 echo "| **Verbose Output** | $([ "${{ env.ENABLE_VERBOSE_TEST_OUTPUT }}" == "true" ] && echo "✅ Enabled" || echo "❌ Disabled") | Test output verbosity |" >> $GITHUB_STEP_SUMMARY
366415 echo "" >> $GITHUB_STEP_SUMMARY
367416
368- # Custom Project Variables
369- echo "## 🎨 Custom Project Configuration" >> $GITHUB_STEP_SUMMARY
370- PROJECT_VARS=$(echo "$ENV_JSON" | jq -r 'to_entries | map(select(.key | startswith("CUSTOM_"))) | length')
371- if [ "$PROJECT_VARS" -gt 0 ]; then
372- echo "Found **$PROJECT_VARS** CUSTOM-specific environment variables:" >> $GITHUB_STEP_SUMMARY
373- echo "" >> $GITHUB_STEP_SUMMARY
374- echo "| Variable | Value |" >> $GITHUB_STEP_SUMMARY
375- echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
376- echo "$ENV_JSON" | jq -r 'to_entries | map(select(.key | startswith("CUSTOM_"))) | sort_by(.key) | .[] | "| **\(.key)** | `\(.value)` |"' >> $GITHUB_STEP_SUMMARY
377- else
378- echo "_No project-specific (CUSTOM_*) variables found._" >> $GITHUB_STEP_SUMMARY
379- fi
380- echo "" >> $GITHUB_STEP_SUMMARY
381-
382417 # Security Tools Configuration
383418 echo "## 🔒 Security Tools Configuration" >> $GITHUB_STEP_SUMMARY
384419 echo "| Tool | Version | Configuration |" >> $GITHUB_STEP_SUMMARY
@@ -388,18 +423,6 @@ jobs:
388423 echo "| **Nancy** | \`${{ env.NANCY_VERSION }}\` | Excludes: \`${{ env.NANCY_EXCLUDES }}\` |" >> $GITHUB_STEP_SUMMARY
389424 echo "" >> $GITHUB_STEP_SUMMARY
390425
391- # Test Matrix
392- echo "## 🧪 Generated Test Matrix" >> $GITHUB_STEP_SUMMARY
393- MATRIX_COUNT=$(echo "$MATRIX_JSON" | jq '.include | length')
394- echo "**Total test configurations**: $MATRIX_COUNT" >> $GITHUB_STEP_SUMMARY
395- echo "" >> $GITHUB_STEP_SUMMARY
396- echo "| # | OS | Go Version | Configuration Name | Fuzz Testing |" >> $GITHUB_STEP_SUMMARY
397- echo "|---|----|-----------|--------------------|--------------|" >> $GITHUB_STEP_SUMMARY
398-
399- echo "$MATRIX_JSON" | jq -r '.include | to_entries | .[] | "| \(.key + 1) | \(.value.os) | \(.value["go-version"]) | \(.value.name) | \(if .value["run-fuzz"] then "✅ Yes" else "❌ No" end) |"' >> $GITHUB_STEP_SUMMARY
400-
401- echo "" >> $GITHUB_STEP_SUMMARY
402-
403426 # GitHub Token Configuration
404427 echo "## 🔑 Authentication" >> $GITHUB_STEP_SUMMARY
405428 echo "| Setting | Value |" >> $GITHUB_STEP_SUMMARY
@@ -408,16 +431,33 @@ jobs:
408431 echo "| **Token Type** | $([ "${{ env.PREFERRED_GITHUB_TOKEN }}" == "GH_PAT_TOKEN" ] && echo "Personal Access Token (5000 req/hour)" || echo "Default GITHUB_TOKEN (1000 req/hour)") |" >> $GITHUB_STEP_SUMMARY
409432 echo "" >> $GITHUB_STEP_SUMMARY
410433
411- # Summary Statistics
412- echo "## 📈 Configuration Statistics" >> $GITHUB_STEP_SUMMARY
413- ENABLED_FEATURES=$(echo "$ENV_JSON" | jq -r '[to_entries | .[] | select(.key | startswith("ENABLE_")) | select(.value == "true")] | length')
414- DISABLED_FEATURES=$(echo "$ENV_JSON" | jq -r '[to_entries | .[] | select(.key | startswith("ENABLE_")) | select(.value == "false")] | length')
434+ # Custom Project Variables
435+ echo "## 🎨 Custom Project Configuration" >> $GITHUB_STEP_SUMMARY
436+ PROJECT_VARS=$(echo "$ENV_JSON" | jq -r 'to_entries | map(select(.key | startswith("CUSTOM_"))) | length')
437+ if [ "$PROJECT_VARS" -gt 0 ]; then
438+ echo "Found **$PROJECT_VARS** CUSTOM-specific environment variables:" >> $GITHUB_STEP_SUMMARY
439+ echo "" >> $GITHUB_STEP_SUMMARY
440+ echo "| Variable | Value |" >> $GITHUB_STEP_SUMMARY
441+ echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
442+ echo "$ENV_JSON" | jq -r 'to_entries | map(select(.key | startswith("CUSTOM_"))) | sort_by(.key) | .[] | "| **\(.key)** | `\(.value)` |"' >> $GITHUB_STEP_SUMMARY
443+ else
444+ echo "_No project-specific (CUSTOM_*) variables found._" >> $GITHUB_STEP_SUMMARY
445+ fi
446+ echo "" >> $GITHUB_STEP_SUMMARY
415447
416- echo "- **Enabled Features**: $ENABLED_FEATURES" >> $GITHUB_STEP_SUMMARY
417- echo "- **Disabled Features**: $DISABLED_FEATURES" >> $GITHUB_STEP_SUMMARY
418- echo "- **Test Matrix Combinations**: $MATRIX_COUNT" >> $GITHUB_STEP_SUMMARY
419- echo "- **Unique Go Versions**: $(echo "$UNIQUE_GO_VERSIONS" | jq 'length')" >> $GITHUB_STEP_SUMMARY
420- echo "- **Runner Operating Systems**: $([ "${{ env.PRIMARY_RUNNER }}" == "${{ env.SECONDARY_RUNNER }}" ] && echo "1" || echo "2")" >> $GITHUB_STEP_SUMMARY
448+ # All Environment Variables (moved to end as reference)
449+ echo "## 🔍 All Environment Variables" >> $GITHUB_STEP_SUMMARY
450+ echo "<details>" >> $GITHUB_STEP_SUMMARY
451+ echo "<summary>Click to expand all $ENV_COUNT environment variables</summary>" >> $GITHUB_STEP_SUMMARY
452+ echo "" >> $GITHUB_STEP_SUMMARY
453+ echo "| Variable | Value |" >> $GITHUB_STEP_SUMMARY
454+ echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
455+
456+ # Sort and display all env vars
457+ echo "$ENV_JSON" | jq -r 'to_entries | sort_by(.key) | .[] | "| **\(.key)** | `\(.value)` |"' >> $GITHUB_STEP_SUMMARY
458+
459+ echo "" >> $GITHUB_STEP_SUMMARY
460+ echo "</details>" >> $GITHUB_STEP_SUMMARY
421461 echo "" >> $GITHUB_STEP_SUMMARY
422462
423463 # Footer
0 commit comments