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