Skip to content

Commit c283df4

Browse files
authored
feat(ci): add skip mechanism via GitHub variables (#3187)
1 parent 280975a commit c283df4

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

.github/workflows/acceptance-tests.yaml

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,79 @@ jobs:
5454
uses: actions/setup-go@v5
5555
with:
5656
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 }}
5799
- 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
59130
env:
60131
TF_LOG: DEBUG
61132
TF_ACC: 1

0 commit comments

Comments
 (0)