|
54 | 54 | uses: actions/setup-go@v5 |
55 | 55 | with: |
56 | 56 | go-version: 1.24.0 |
| 57 | + # This CI supports skipping flaky or broken tests via GitHub repository variables. |
| 58 | + # This allows quick fixes without code changes when tests break due to external factors. |
| 59 | + # |
| 60 | + # HOW TO SKIP TESTS: |
| 61 | + # 1. Go to: Settings → Secrets and variables → Actions → Variables |
| 62 | + # 2. Create or edit Repository variables: |
| 63 | + # - SKIP_TESTS_<PRODUCT>: Skip patterns for any product (uppercase) |
| 64 | + # - SKIP_TESTS_ALL: Skip patterns applied to ALL products |
| 65 | + # |
| 66 | + # PATTERN SYNTAX: |
| 67 | + # - Single test: TestAccServer_Basic |
| 68 | + # - Multiple tests: TestAccServer_Basic|TestAccServer_Other |
| 69 | + # - Wildcard: TestAccServer.* |
| 70 | + # - Contains: .*IPAM.* |
| 71 | + # |
| 72 | + # EXAMPLE: |
| 73 | + # Variable: SKIP_TESTS_BAREMETAL |
| 74 | + # Value: TestAccServer_Basic|TestAccServer_WithIPAMPrivateNetwork |
| 75 | + - name: Determine Skip Pattern |
| 76 | + id: skip-config |
| 77 | + run: | |
| 78 | + PRODUCT="${{ matrix.products }}" |
| 79 | + SKIP_PATTERN="" |
| 80 | + |
| 81 | + case "$PRODUCT" in |
| 82 | + baremetal) |
| 83 | + SKIP_PATTERN="$SKIP_TESTS_BAREMETAL" |
| 84 | + ;; |
| 85 | + esac |
| 86 | +
|
| 87 | + if [ -n "$SKIP_TESTS_ALL" ]; then |
| 88 | + if [ -n "$SKIP_PATTERN" ]; then |
| 89 | + SKIP_PATTERN="${SKIP_PATTERN}|${SKIP_TESTS_ALL}" |
| 90 | + else |
| 91 | + SKIP_PATTERN="$SKIP_TESTS_ALL" |
| 92 | + fi |
| 93 | + fi |
| 94 | +
|
| 95 | + echo "skip_pattern=$SKIP_PATTERN" >> $GITHUB_OUTPUT |
| 96 | + env: |
| 97 | + SKIP_TESTS_BAREMETAL: ${{ vars.SKIP_TESTS_BAREMETAL }} |
| 98 | + SKIP_TESTS_ALL: ${{ vars.SKIP_TESTS_ALL }} |
57 | 99 | - name: Run Acceptance Tests |
58 | | - run: go test -v ./internal/services/${{ matrix.products }} -timeout=2h |
| 100 | + run: | |
| 101 | + SKIP_PATTERN="${{ steps.skip-config.outputs.skip_pattern }}" |
| 102 | +
|
| 103 | + if [ -n "$SKIP_PATTERN" ]; then |
| 104 | + echo "" |
| 105 | + echo "SKIPPING TESTS" |
| 106 | + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" |
| 107 | + echo "Pattern: $SKIP_PATTERN" |
| 108 | + echo "" |
| 109 | + echo "Tests that will be skipped:" |
| 110 | + go test -list=. ./internal/services/${{ matrix.products }} | grep -E "$SKIP_PATTERN" || true |
| 111 | + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" |
| 112 | + echo "" |
| 113 | +
|
| 114 | + go test -v ./internal/services/${{ matrix.products }} -timeout=2h -skip="$SKIP_PATTERN" |
| 115 | + TEST_RESULT=$? |
| 116 | + else |
| 117 | + go test -v ./internal/services/${{ matrix.products }} -timeout=2h |
| 118 | + TEST_RESULT=$? |
| 119 | + fi |
| 120 | +
|
| 121 | + if [ -n "$SKIP_PATTERN" ]; then |
| 122 | + echo "" |
| 123 | + echo "CI Skip Configuration:" |
| 124 | + echo "Pattern: $SKIP_PATTERN" |
| 125 | + echo "To modify: Update SKIP_TESTS_$(echo ${{ matrix.products }} | tr '[:lower:]' '[:upper:]') in GitHub repository variables" |
| 126 | + fi |
| 127 | + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" |
| 128 | +
|
| 129 | + exit $TEST_RESULT |
59 | 130 | env: |
60 | 131 | TF_LOG: DEBUG |
61 | 132 | TF_ACC: 1 |
|
0 commit comments