1
1
name : E2E Subtensor Tests
2
2
3
3
concurrency :
4
- group : e2e-subtensor-${{ github.ref }}
4
+ group : e2e-subtensor-${{ github.event.pull_request.number || github. ref }}
5
5
cancel-in-progress : true
6
6
7
7
on :
8
- push :
9
- branches :
10
- - ' **'
11
8
pull_request :
12
9
branches :
13
10
- ' **'
14
- types : [ opened, synchronize, reopened, ready_for_review ]
11
+ types : [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
15
12
16
13
workflow_dispatch :
17
14
inputs :
29
26
# Looking for e2e tests
30
27
find-tests :
31
28
runs-on : ubuntu-latest
32
- if : ${{ github.event_name != 'pull_request' || github. event.pull_request.draft == false }}
29
+ if : ${{ github.event.pull_request.draft == false }}
33
30
outputs :
34
31
test-files : ${{ steps.get-tests.outputs.test-files }}
35
32
steps :
@@ -50,28 +47,61 @@ jobs:
50
47
pull-docker-image :
51
48
runs-on : ubuntu-latest
52
49
outputs :
53
- image-name : ${{ steps.set-output .outputs.image-name }}
50
+ image-name : ${{ steps.set-image .outputs.image }}
54
51
steps :
55
- - name : Set Docker image tag based on branch
56
- id : set-output
52
+ - name : Set Docker image tag based on label or branch
53
+ id : set-image
57
54
run : |
58
- ref="${{ github.ref_name }}"
59
- if [[ "$ref" == "master" ]]; then
60
- image="ghcr.io/opentensor/subtensor-localnet:main"
55
+ echo "Event: $GITHUB_EVENT_NAME"
56
+ echo "Branch: $GITHUB_REF_NAME"
57
+
58
+ echo "Reading labels ..."
59
+ if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
60
+ labels=$(jq -r '.pull_request.labels[].name' "$GITHUB_EVENT_PATH")
61
61
else
62
- image="ghcr.io/opentensor/subtensor-localnet:devnet-ready"
62
+ labels=""
63
+ fi
64
+
65
+ image=""
66
+
67
+ for label in $labels; do
68
+ echo "Found label : $label"
69
+ case "$label" in
70
+ " subtensor-localnet:main" )
71
+ image="ghcr.io/opentensor/subtensor-localnet:main"
72
+ break
73
+ ;;
74
+ " subtensor-localnet:testnet" )
75
+ image="ghcr.io/opentensor/subtensor-localnet:testnet"
76
+ break
77
+ ;;
78
+ " subtensor-localnet:devnet" )
79
+ image="ghcr.io/opentensor/subtensor-localnet:devnet"
80
+ break
81
+ ;;
82
+ esac
83
+ done
84
+
85
+ if [[ -z "$image" ]]; then
86
+ # fallback to default based on branch
87
+ if [[ "${GITHUB_REF_NAME}" == "master" ]]; then
88
+ image="ghcr.io/opentensor/subtensor-localnet:main"
89
+ else
90
+ image="ghcr.io/opentensor/subtensor-localnet:devnet-ready"
91
+ fi
63
92
fi
64
- echo "Using image: $image"
65
- echo "image-name=$image" >> "$GITHUB_OUTPUT"
93
+
94
+ echo "✅ Final selected image : $image"
95
+ echo "image=$image" >> "$GITHUB_OUTPUT"
66
96
67
97
- name : Log in to GitHub Container Registry
68
98
run : echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
69
99
70
100
- name : Pull Docker Image
71
- run : docker pull ${{ steps.set-output .outputs.image-name }}
101
+ run : docker pull ${{ steps.set-image .outputs.image }}
72
102
73
103
- name : Save Docker Image to Cache
74
- run : docker save -o subtensor-localnet.tar ${{ steps.set-output .outputs.image-name }}
104
+ run : docker save -o subtensor-localnet.tar ${{ steps.set-image .outputs.image }}
75
105
76
106
- name : Upload Docker Image as Artifact
77
107
uses : actions/upload-artifact@v4
@@ -122,22 +152,21 @@ jobs:
122
152
env :
123
153
LOCALNET_IMAGE_NAME : ${{ needs.pull-docker-image.outputs.image-name }}
124
154
run : |
125
- set +e
126
155
for i in 1 2 3; do
127
- echo "🔁 Attempt $i: Running tests"
128
- uv run pytest ${{ matrix.test-file }} -s
129
- status=$?
130
- if [ $status -eq 0 ]; then
156
+ echo "::group::🔁 Test attempt $i"
157
+ if uv run pytest ${{ matrix.test-file }} -s; then
131
158
echo "✅ Tests passed on attempt $i"
132
- break
159
+ echo "::endgroup::"
160
+ exit 0
133
161
else
134
162
echo "❌ Tests failed on attempt $i"
135
- if [ $i -eq 3 ]; then
136
- echo "Tests failed after 3 attempts"
137
- exit 1
163
+ echo "::endgroup::"
164
+ if [ "$i" -lt 3 ]; then
165
+ echo "Retrying..."
166
+ sleep 5
138
167
fi
139
- echo "Retrying..."
140
- sleep 5
141
168
fi
142
169
done
143
170
171
+ echo "Tests failed after 3 attempts"
172
+ exit 1
0 commit comments