Skip to content

Commit adbdd0f

Browse files
Merge pull request #256 from DefangLabs/jordan/samples-loadtest
run loadtest for changed samples
2 parents a69d31d + 5c9031c commit adbdd0f

File tree

26 files changed

+1695
-6
lines changed

26 files changed

+1695
-6
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
name: Deploy Changed Samples
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'samples/**'
7+
8+
permissions:
9+
contents: read
10+
id-token: write
11+
12+
jobs:
13+
deploy_changed_samples:
14+
runs-on: ubuntu-latest
15+
concurrency:
16+
group: deploy_samples-group-${{ github.head_ref }}
17+
cancel-in-progress: true
18+
environment: deploy-changed-samples
19+
timeout-minutes: 90
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 1
25+
26+
- name: Fetch main branch
27+
run: git fetch origin main:main # Fetch the main branch reference for comparison
28+
29+
- name: Identify changed samples
30+
run: |
31+
git diff --name-only HEAD main | grep '^samples/' | awk -F'/' '{print $1"/"$2}' | sort | uniq > changed_samples.txt
32+
if [ ! -s changed_samples.txt ]; then
33+
echo "No samples have changed. Exiting..."
34+
exit 0
35+
fi
36+
37+
- name: Install Golang
38+
uses: actions/setup-go@v5
39+
with:
40+
go-version-file: tools/testing/go.mod
41+
cache-dependency-path: |
42+
tools/testing/go.sum
43+
44+
- name: Build the test tool using Go
45+
run: |
46+
go mod tidy
47+
go build ./cmd/loadtest
48+
working-directory: tools/testing/
49+
50+
- name: Install Defang
51+
run: |
52+
. <(curl -Ls https://s.defang.io/install)
53+
54+
- name: Run tests
55+
id: run-tests
56+
shell: bash # implies set -o pipefail, so pipe below will keep the exit code from loadtest
57+
env:
58+
FIXED_VERIFIER_PK: ${{ secrets.FIXED_VERIFIER_PK }}
59+
TEST_AWS_ACCESS_KEY: ${{ secrets.TEST_AWS_ACCESS_KEY }}
60+
TEST_AWS_SECRET_KEY: ${{ secrets.TEST_AWS_SECRET_KEY }}
61+
TEST_BOARD_PASSWORD: ${{ secrets.TEST_BOARD_PASSWORD }}
62+
TEST_DATABASE_HOST: ${{ secrets.TEST_DATABASE_HOST }}
63+
TEST_DATABASE_NAME: ${{ secrets.TEST_DATABASE_NAME }}
64+
TEST_DATABASE_PASSWORD: ${{ secrets.TEST_DATABASE_PASSWORD }}
65+
TEST_DATABASE_URL: ${{ secrets.TEST_DATABASE_URL }}
66+
TEST_DATABASE_USERNAME: ${{ secrets.TEST_DATABASE_USERNAME }}
67+
TEST_HASURA_GRAPHQL_ADMIN_SECRET: ${{ secrets.TEST_HASURA_GRAPHQL_ADMIN_SECRET }}
68+
TEST_HASURA_GRAPHQL_DATABASE_URL: ${{ secrets.TEST_HASURA_GRAPHQL_DATABASE_URL }}
69+
TEST_HF_TOKEN: ${{ secrets.TEST_HF_TOKEN }}
70+
TEST_MB_DB_DBNAME: ${{ secrets.TEST_MB_DB_DBNAME }}
71+
TEST_MB_DB_HOST: ${{ secrets.TEST_MB_DB_HOST }}
72+
TEST_MB_DB_PASS: ${{ secrets.TEST_MB_DB_PASS }}
73+
TEST_MB_DB_PORT: ${{ secrets.TEST_MB_DB_PORT }}
74+
TEST_MB_DB_USER: ${{ secrets.TEST_MB_DB_USER }}
75+
TEST_NC_DB: ${{ secrets.TEST_NC_DB }}
76+
TEST_NC_S3_ENDPOINT: ${{ secrets.TEST_NC_S3_ENDPOINT }}
77+
TEST_NC_S3_BUCKET_NAME: ${{ secrets.TEST_NC_S3_BUCKET_NAME }}
78+
TEST_NC_S3_REGION: ${{ secrets.TEST_NC_S3_REGION }}
79+
TEST_NC_S3_ACCESS_KEY: ${{ secrets.TEST_NC_S3_ACCESS_KEY }}
80+
TEST_NC_S3_ACCESS_SECRET: ${{ secrets.TEST_NC_S3_ACCESS_SECRET }}
81+
TEST_OPENAI_KEY: ${{ secrets.TEST_OPENAI_KEY }}
82+
TEST_POSTGRES_PASSWORD: ${{ secrets.TEST_POSTGRES_PASSWORD }}
83+
TEST_QUEUE: ${{ secrets.TEST_QUEUE }}
84+
TEST_SECRET_KEY_BASE: ${{ secrets.TEST_SECRET_KEY_BASE }}
85+
TEST_SESSION_SECRET: ${{ secrets.TEST_SESSION_SECRET }}
86+
TEST_SLACK_CHANNEL_ID: ${{ secrets.TEST_SLACK_CHANNEL_ID }}
87+
TEST_SLACK_TOKEN: ${{ secrets.TEST_SLACK_TOKEN }}
88+
run: |
89+
SAMPLES=$(sed 's|^samples/||' changed_samples.txt | paste -s -d ',' -)
90+
echo "Running tests for samples: $SAMPLES"
91+
92+
mkdir output
93+
# concurrency is set to 10 to avoid exhausting our fargate vCPU limits when running
94+
# kaniko builds, which consume 4 vCPUs each. the limit is currently set to 60--6.5 of
95+
# which are used to run the staging stack. So floor((60-6.5)/4) = 13 is our upper limit
96+
./tools/testing/loadtest -c fabric-staging.defang.dev:443 --timeout=15m --concurrency=10 -s $SAMPLES -o output --markdown=true | tee output/summary.log | grep -v '^\s*[-*]' # removes load sample log lines
97+
98+
- name: Upload Output as Artifact
99+
uses: actions/upload-artifact@v4
100+
if: success() || steps.run-tests.outcome == 'failure' # Always upload result unless cancelled
101+
with:
102+
name: program-output
103+
path: output/**

samples/nextjs-blog/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nextjs-documentation/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nodejs-chatroom/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nodejs-express/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ services:
66
ports:
77
- mode: ingress
88
target: 3000
9+
published: 3000
910
deploy:
1011
resources:
1112
reservations:

samples/nodejs-form/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nodejs-http/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nodejs-openai/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
environment:
1112
- OPENAI_KEY
1213
deploy:

samples/nodejs-rest-api/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
deploy:
1112
resources:
1213
reservations:

samples/nodejs-s3/compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
ports:
88
- mode: ingress
99
target: 3000
10+
published: 3000
1011
environment:
1112
- AWS_ACCESS_KEY
1213
- AWS_SECRET_KEY

0 commit comments

Comments
 (0)