build(deps): bump fluent/fluent-bit from 4.0.10 to 4.0.11 #474
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI Status Check - DISABLED (PR 176 TIMEOUT FIX) | ||
| # EMERGENCY DISABLE: This workflow was causing 5-minute timeouts during dependency download | ||
| # Root cause: 728 dependencies (~90MB) cannot download in 8-minute job timeout | ||
| # | ||
| # REPLACED BY: nephoran-ci-2025-production.yml (consolidated pipeline) | ||
| # - 25-minute timeout for large dependency trees | ||
| # - Multi-layer caching with fallbacks | ||
| # - Retry mechanisms for reliability | ||
| # - Eliminates workflow conflicts from 38+ competing workflows | ||
| # DISABLED: Emergency fix for PR 176 CI failure cascade | ||
| on: | ||
| # EMERGENCY DISABLED - causing timeout failures | ||
| # Original triggers moved to nephoran-ci-2025-production.yml | ||
| workflow_dispatch: | ||
| inputs: | ||
| emergency_enable: | ||
| description: 'Emergency re-enable (use nephoran-ci-2025-production.yml instead)' | ||
| type: boolean | ||
| default: false | ||
| # ORIGINAL TRIGGERS (moved to consolidated workflow): | ||
| # pull_request: | ||
| # types: [opened, synchronize, reopened] | ||
| # branches: | ||
| # - main | ||
| # - integrate/** | ||
| # paths: | ||
| # - '**.go' | ||
| # - 'go.mod' | ||
| # - 'go.sum' | ||
| concurrency: | ||
| group: ci-status-${{ github.ref }} | ||
| cancel-in-progress: true | ||
| env: | ||
| <<<<<<< HEAD | ||
| GO_VERSION: "1.24.0" # Latest stable Go version (2025 best practice) | ||
| ======= | ||
| GO_VERSION: "1.24.6" # Latest stable Go version (2025 best practice) | ||
| >>>>>>> 6835433495e87288b95961af7173d866977175ff | ||
| GOPROXY: "https://proxy.golang.org,direct" | ||
| GOSUMDB: "sum.golang.org" | ||
| CGO_ENABLED: "0" | ||
| GOMAXPROCS: "4" | ||
| GOMEMLIMIT: "4GiB" | ||
| GOGC: "100" | ||
| jobs: | ||
| # Stage 1: Quick validation (2-3 minutes) | ||
| quick-check: | ||
| name: Quick Validation | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 # Increased for reliability | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 1 | ||
| - name: Setup Go with cache | ||
| uses: actions/setup-go@v5 | ||
| with: | ||
| go-version: '${{ env.GO_VERSION }}' # Use env variable for consistency | ||
| cache: true | ||
| cache-dependency-path: go.sum | ||
| - name: Verify Go installation | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| go version | ||
| go env | ||
| - name: Cache Go modules | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: | | ||
| ~/.cache/go-build | ||
| ~/go/pkg/mod | ||
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||
| restore-keys: | | ||
| ${{ runner.os }}-go- | ||
| - name: Fail-fast syntax check | ||
| timeout-minutes: 10 | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Running fail-fast syntax check..." | ||
| echo "Downloading dependencies first..." | ||
| go mod download | ||
| echo "Running syntax check..." | ||
| go build ./... | ||
| go vet ./... | ||
| - name: Quick dependency check | ||
| timeout-minutes: 10 | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Downloading dependencies..." | ||
| go mod download -x | ||
| go mod verify | ||
| # Stage 2: Parallel builds with chunking | ||
| build: | ||
| name: Build Components | ||
| needs: quick-check | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 # Increased for reliability | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| component: | ||
| - cmd | ||
| - controllers | ||
| - pkg | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Go with cache | ||
| uses: actions/setup-go@v5 | ||
| with: | ||
| go-version: '${{ env.GO_VERSION }}' # Use env variable for consistency | ||
| cache: true | ||
| cache-dependency-path: go.sum | ||
| - name: Setup build cache | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: | | ||
| ~/.cache/go-build | ||
| ~/go/pkg/mod | ||
| key: ${{ runner.os }}-go-${{ matrix.component }}-${{ hashFiles('**/go.sum') }} | ||
| restore-keys: | | ||
| ${{ runner.os }}-go-${{ matrix.component }}- | ||
| ${{ runner.os }}-go- | ||
| - name: Build ${{ matrix.component }} | ||
| timeout-minutes: 10 # Increased timeout | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Building ${{ matrix.component }}..." | ||
| # Use optimized CI build script for core components | ||
| if [ "${{ matrix.component }}" == "cmd" ]; then | ||
| if [ -f "scripts/ci-build.sh" ]; then | ||
| chmod +x scripts/ci-build.sh | ||
| ./scripts/ci-build.sh | ||
| else | ||
| echo "Building cmd components..." | ||
| go build -p=4 -mod=readonly -trimpath \ | ||
| -ldflags="-s -w" -gcflags="-l=4" \ | ||
| -tags="fast_build" \ | ||
| ./cmd/... | ||
| fi | ||
| else | ||
| case "${{ matrix.component }}" in | ||
| controllers) | ||
| # Build controllers with timeout and better error handling | ||
| echo "Building controllers..." | ||
| timeout 300 go build -p=4 -mod=readonly -trimpath \ | ||
| -ldflags="-s -w" -gcflags="-l=4" \ | ||
| -tags="fast_build" \ | ||
| ./controllers/... | ||
| ;; | ||
| pkg) | ||
| # Build only critical pkg directories to avoid timeout | ||
| for pkg_dir in pkg/context pkg/clients pkg/nephio; do | ||
| if [ -d "$pkg_dir" ]; then | ||
| echo "Building $pkg_dir..." | ||
| timeout 120 go build -p=4 -mod=readonly -trimpath \ | ||
| -ldflags="-s -w" -gcflags="-l=4" \ | ||
| -tags="fast_build" \ | ||
| ./$pkg_dir/... | ||
| fi | ||
| done | ||
| ;; | ||
| esac | ||
| fi | ||
| - name: Upload artifacts | ||
| if: matrix.component == 'cmd' | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: binaries-${{ matrix.component }} | ||
| path: bin/ | ||
| retention-days: 1 | ||
| # Stage 3: Parallel testing with timeout protection | ||
| test: | ||
| name: Test Suite | ||
| needs: build | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 # Increased for reliability | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| package: | ||
| - pkg | ||
| - internal | ||
| - controllers | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Go with cache | ||
| uses: actions/setup-go@v5 | ||
| with: | ||
| go-version: '${{ env.GO_VERSION }}' # Use env variable for consistency | ||
| cache: true | ||
| cache-dependency-path: go.sum | ||
| - name: Setup test cache | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: | | ||
| ~/.cache/go-build | ||
| ~/go/pkg/mod | ||
| key: ${{ runner.os }}-gotest-${{ matrix.package }}-${{ hashFiles('**/go.sum') }} | ||
| restore-keys: | | ||
| ${{ runner.os }}-gotest-${{ matrix.package }}- | ||
| ${{ runner.os }}-gotest- | ||
| - name: Run tests for ${{ matrix.package }} | ||
| timeout-minutes: 10 # Increased timeout | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Testing ${{ matrix.package }}..." | ||
| if [ -d "${{ matrix.package }}" ]; then | ||
| go test -short -p=8 -short -timeout=5m \ | ||
| -tags="fast_build" \ | ||
| -coverprofile=coverage-${{ matrix.package }}.out \ | ||
| ./${{ matrix.package }}/... | ||
| else | ||
| echo "Package ${{ matrix.package }} not found, skipping tests" | ||
| # Create empty coverage file to avoid upload errors | ||
| touch coverage-${{ matrix.package }}.out | ||
| fi | ||
| - name: Upload coverage | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: coverage-${{ matrix.package }} | ||
| path: coverage-${{ matrix.package }}.out | ||
| retention-days: 1 | ||
| # Stage 4: Quick integration test | ||
| integration: | ||
| name: Integration Check | ||
| needs: [build, test] | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 # Increased timeout | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Go | ||
| uses: actions/setup-go@v5 | ||
| with: | ||
| go-version: '${{ env.GO_VERSION }}' # Use env variable for consistency | ||
| cache: true | ||
| - name: Download binaries | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: binaries-cmd | ||
| path: bin/ | ||
| continue-on-error: true # Don't fail if no artifacts exist | ||
| - name: Quick integration test | ||
| timeout-minutes: 10 | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Running quick integration check..." | ||
| if [ -d "bin" ] && [ "$(ls -A bin 2>/dev/null)" ]; then | ||
| echo "Found binaries in bin/ directory" | ||
| chmod +x bin/* || echo "No executables found in bin/" | ||
| # Just verify binaries exist and can show version/help | ||
| for binary in bin/*; do | ||
| if [ -x "$binary" ]; then | ||
| name=$(basename $binary) | ||
| echo "Checking $name..." | ||
| # Remove silent failure - let timeout handle errors properly | ||
| if timeout 15 $binary --help >/dev/null 2>&1; then | ||
| echo "$name supports --help" | ||
| elif timeout 15 $binary version >/dev/null 2>&1; then | ||
| echo "$name supports version" | ||
| else | ||
| echo "$name does not support --help or version (this is OK)" | ||
| fi | ||
| fi | ||
| done | ||
| else | ||
| echo "No binaries found to test - this may be expected for this component structure" | ||
| fi | ||
| # Final status check | ||
| ci-status: | ||
| name: CI Status | ||
| needs: [quick-check, build, test, integration] | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 | ||
| if: always() | ||
| steps: | ||
| - name: Check CI Status | ||
| run: | | ||
| set -e # Bash strict mode - fail on any error | ||
| echo "Checking individual job results..." | ||
| echo "Quick check: ${{ needs.quick-check.result }}" | ||
| echo "Build: ${{ needs.build.result }}" | ||
| echo "Test: ${{ needs.test.result }}" | ||
| echo "Integration: ${{ needs.integration.result }}" | ||
| if [ "${{ needs.quick-check.result }}" == "failure" ] || \ | ||
| [ "${{ needs.build.result }}" == "failure" ] || \ | ||
| [ "${{ needs.test.result }}" == "failure" ] || \ | ||
| [ "${{ needs.integration.result }}" == "failure" ]; then | ||
| echo "CI pipeline failed - one or more jobs failed" | ||
| exit 1 | ||
| fi | ||
| echo "CI pipeline passed successfully!" | ||