-
Notifications
You must be signed in to change notification settings - Fork 5
156 lines (137 loc) · 4.78 KB
/
e2e.yml
File metadata and controls
156 lines (137 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: E2E Tests
on:
push:
branches: [main]
paths:
- "src/**"
pull_request:
branches: [main]
paths:
- "src/**"
workflow_dispatch: {}
jobs:
e2e:
name: E2E Tests - ${{ matrix.library }}
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
max-parallel: 6
matrix:
library:
# Exclude upstash-redis-js for now because takes ~15 min. To re-enable when someone needs it.
[
fetch,
firestore,
grpc,
http,
ioredis,
mysql,
mysql2,
nextjs,
pg,
postgres,
prisma,
mongodb,
redis,
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Install SDK dependencies
run: npm install
- name: Build SDK
run: npm run build
- name: Verify SDK build
run: |
ls -la dist/ || (echo "dist folder not found!" && exit 1)
test -f dist/index.js || (echo "SDK build incomplete!" && exit 1)
- name: Get latest Tusk CLI version
id: tusk-version
run: |
VERSION=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/Use-Tusk/tusk-cli/releases/latest" \
| grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Latest Tusk CLI version: $VERSION"
- name: Run E2E tests for ${{ matrix.library }}
env:
DOCKER_DEFAULT_PLATFORM: linux/amd64
TUSK_USE_RUST_CORE: "1"
TUSK_CLI_VERSION: ${{ steps.tusk-version.outputs.version }}
# Required for Firestore e2e tests
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
FIREBASE_SERVICE_ACCOUNT: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }}
UPSTASH_REDIS_REST_URL: ${{ vars.UPSTASH_REDIS_REST_URL }}
UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
run: ./src/instrumentation/libraries/${{ matrix.library }}/e2e-tests/run-all.sh 3000
- name: Cleanup Docker resources
if: always()
run: |
# Stop all running containers
docker ps -aq | xargs -r docker stop || true
docker ps -aq | xargs -r docker rm || true
# Clean up volumes
docker volume prune -f || true
# Clean up networks
docker network prune -f || true
non-rust-smoke:
name: E2E Non-Rust Smoke - http
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Install SDK dependencies
run: npm install
- name: Build SDK
run: npm run build
- name: Verify SDK build
run: |
ls -la dist/ || (echo "dist folder not found!" && exit 1)
test -f dist/index.js || (echo "SDK build incomplete!" && exit 1)
- name: Get latest Tusk CLI version
id: tusk-version
run: |
VERSION=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/Use-Tusk/tusk-cli/releases/latest" \
| grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Latest Tusk CLI version: $VERSION"
- name: Run non-rust smoke test
env:
DOCKER_DEFAULT_PLATFORM: linux/amd64
TUSK_USE_RUST_CORE: "0"
TUSK_CLI_VERSION: ${{ steps.tusk-version.outputs.version }}
# Required by shared e2e env even if this library does not use them
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
FIREBASE_SERVICE_ACCOUNT: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }}
UPSTASH_REDIS_REST_URL: ${{ vars.UPSTASH_REDIS_REST_URL }}
UPSTASH_REDIS_REST_TOKEN: ${{ secrets.UPSTASH_REDIS_REST_TOKEN }}
run: ./src/instrumentation/libraries/http/e2e-tests/run-all.sh 3000
- name: Cleanup Docker resources
if: always()
run: |
# Stop all running containers
docker ps -aq | xargs -r docker stop || true
docker ps -aq | xargs -r docker rm || true
# Clean up volumes
docker volume prune -f || true
# Clean up networks
docker network prune -f || true