Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
224 commits
Select commit Hold shift + click to select a range
0d652b9
docs
rishav-karanjit Sep 15, 2025
fe1e1ff
init server
rishav-karanjit Sep 15, 2025
8522b26
m
Sep 16, 2025
833e20a
auto commit
rishav-karanjit Sep 16, 2025
4d44e4f
m
Sep 16, 2025
139b88a
Add context for q
rishav-karanjit Sep 16, 2025
6622859
m
Sep 16, 2025
bcae379
Update test-server/java-tests/src/it/java/software/amazon/encryption/…
lucasmcdonald3 Sep 16, 2025
bf0683c
Update test-server/java-tests/src/it/java/software/amazon/encryption/…
lucasmcdonald3 Sep 16, 2025
afecd75
m
Sep 16, 2025
d122c1c
Merge branch 'go-test-server' of github.com:aws/amazon-s3-encryption-…
Sep 16, 2025
7ed605b
auto commit
rishav-karanjit Sep 16, 2025
c2826e0
auto commit
rishav-karanjit Sep 16, 2025
2e594b6
m
Sep 17, 2025
2316fa4
feat: Go V3 test server; rename Java and Python as "V3" implementations
lucasmcdonald3 Sep 17, 2025
cecf9aa
auto commit
rishav-karanjit Sep 17, 2025
2263f16
auto commit
rishav-karanjit Sep 17, 2025
e7806a4
clean up
rishav-karanjit Sep 17, 2025
4e39960
:rename
rishav-karanjit Sep 17, 2025
b106aba
readme
rishav-karanjit Sep 17, 2025
bf1d6fd
auto commit
rishav-karanjit Sep 17, 2025
62e9383
remove temp
rishav-karanjit Sep 17, 2025
e883161
always run the tests
seebees Sep 17, 2025
d9924f0
logs
rishav-karanjit Sep 17, 2025
2312865
auto commit
rishav-karanjit Sep 17, 2025
a039186
Merge branch 'fireegg-test-servers' of https://github.com/aws/amazon-…
rishav-karanjit Sep 18, 2025
167cdb7
implement test server for c++ V2
ajewellamz Sep 18, 2025
3000858
m
ajewellamz Sep 18, 2025
9ad923c
m
ajewellamz Sep 18, 2025
a142eab
logs
rishav-karanjit Sep 18, 2025
f82b4ab
legacy
rishav-karanjit Sep 18, 2025
04bc3c7
Break up the makefiles (#9)
seebees Sep 18, 2025
d01506e
makefile
rishav-karanjit Sep 18, 2025
8b19cdf
auto commit
rishav-karanjit Sep 18, 2025
1e69cb0
chore: always run the tests
kessplas Sep 18, 2025
43514e0
auto commit
rishav-karanjit Sep 18, 2025
24637c5
Merge remote-tracking branch 'origin/fireegg-test-servers' into risha…
rishav-karanjit Sep 18, 2025
86146f5
auto commit
rishav-karanjit Sep 18, 2025
b9acf93
auto commit
rishav-karanjit Sep 18, 2025
6255978
Error model
rishav-karanjit Sep 18, 2025
69fdd20
auto commit
rishav-karanjit Sep 18, 2025
4738803
auto commit
rishav-karanjit Sep 18, 2025
a3baf9d
auto commit
rishav-karanjit Sep 18, 2025
a37a232
remove redundant import
rishav-karanjit Sep 18, 2025
8d07ee4
auto commit
rishav-karanjit Sep 19, 2025
a89ce29
validation
rishav-karanjit Sep 19, 2025
35cc7e2
m
ajewellamz Sep 19, 2025
c8cdae4
m
ajewellamz Sep 19, 2025
c9224b5
m
ajewellamz Sep 19, 2025
db69245
Merge branch 'fireegg-test-servers' into ajewell/cpp-test-server
ajewellamz Sep 19, 2025
7cdf7e6
m
ajewellamz Sep 19, 2025
6b6bcd7
m
ajewellamz Sep 19, 2025
f133f01
m
ajewellamz Sep 19, 2025
a2ed825
m
ajewellamz Sep 19, 2025
7157850
m
ajewellamz Sep 19, 2025
a21bc8e
m
ajewellamz Sep 19, 2025
f9ade30
Update test-server/net-v2-v3-server/Controllers/ObjectController.cs
rishav-karanjit Sep 19, 2025
1276c33
chore: add php servers
josecorella Sep 19, 2025
ac556cb
Add not implemented feature
rishav-karanjit Sep 19, 2025
8c95c21
Merge branch 'rishav/dotnet/testserver' of https://github.com/aws/ama…
rishav-karanjit Sep 19, 2025
8ed7ee4
Merge branch 'fireegg-test-servers' into rishav/dotnet/testserver
rishav-karanjit Sep 19, 2025
46ae023
Update test-server/java-tests/src/it/java/software/amazon/encryption/…
rishav-karanjit Sep 19, 2025
0b18711
Update test-server/net-v2-v3-server/Controllers/ClientController.cs
rishav-karanjit Sep 19, 2025
93bd763
chore: add S3EC .NET v2 and v3 test server
rishav-karanjit Sep 19, 2025
b047b11
Initial commit of Ruby V2 and V3 test server (#5)
seebees Sep 21, 2025
dc3b274
Merge branch 'fireegg-test-servers' into ajewell/cpp-test-server
ajewellamz Sep 22, 2025
e2bab00
m
ajewellamz Sep 22, 2025
bffb078
chore: add cpp test server v2
ajewellamz Sep 22, 2025
38404fe
auto commit
rishav-karanjit Sep 22, 2025
143721c
auto commit
rishav-karanjit Sep 23, 2025
d7de6f1
auto commit
rishav-karanjit Sep 23, 2025
0346f16
auto commit
rishav-karanjit Sep 23, 2025
c385594
auto commit
rishav-karanjit Sep 23, 2025
1c365c9
auto commit
rishav-karanjit Sep 23, 2025
0e6cb7c
auto commit
rishav-karanjit Sep 23, 2025
a693390
chore: update CDK for S3EC-net
rishav-karanjit Sep 23, 2025
b8413d6
refactor
Sep 25, 2025
6754f8c
m
Sep 25, 2025
6c84ef3
chore: have php link to the local private submodule (#16)
josecorella Sep 25, 2025
6e4b847
m
Sep 25, 2025
8c2a2a0
chore(cdk): allow ToolsDevelopment role assume S3ECGithubTestRole (#18)
imabhichow Sep 25, 2025
4f3d299
m
Sep 26, 2025
ebb03b1
chore(cpp): add v3 server
ajewellamz Sep 26, 2025
2fa579b
chore: Refactor test setup utils
lucasmcdonald3 Sep 26, 2025
a49f9da
m
ajewellamz Sep 26, 2025
f4bb4b7
m
ajewellamz Sep 26, 2025
b20947c
m
Sep 26, 2025
d4fe693
m
Sep 26, 2025
9c22750
m
ajewellamz Sep 26, 2025
f52c5ec
m
ajewellamz Sep 26, 2025
57fcd30
chore: update php installation in ci (#22)
josecorella Sep 26, 2025
2c23d4d
m
Sep 26, 2025
43dbcd8
m
Sep 26, 2025
90f663c
Merge branch 'fireegg-test-servers' into transition-renames
lucasmcdonald3 Sep 26, 2025
ca5e6f4
Merge branch 'fireegg-test-servers' into ajewell/cpp-v3
ajewellamz Sep 26, 2025
04a960a
m
ajewellamz Sep 27, 2025
c6fcd15
Merge branch 'ajewell/cpp-v3' of github.com:aws/amazon-s3-encryption-…
ajewellamz Sep 27, 2025
7c67bae
m
ajewellamz Sep 27, 2025
5879cb8
m
ajewellamz Sep 27, 2025
5c76017
m
ajewellamz Sep 27, 2025
f541357
m
ajewellamz Sep 27, 2025
0f19378
m
ajewellamz Sep 27, 2025
a306717
m
ajewellamz Sep 27, 2025
dab4eea
m
ajewellamz Sep 29, 2025
35ea9bf
m
ajewellamz Sep 29, 2025
2661f22
m
Sep 29, 2025
edf66fb
Merge branch 'transition-renames' of github.com:aws/amazon-s3-encrypt…
Sep 29, 2025
af89d0f
chore: Rename some servers to `current`, add `transition` server defi…
lucasmcdonald3 Sep 29, 2025
acde3c5
m
ajewellamz Sep 29, 2025
b26edd5
Merge branch 'fireegg-test-servers' into ajewell/cpp-v3
ajewellamz Sep 29, 2025
b3e1979
m
ajewellamz Sep 29, 2025
2e6c0f2
m
ajewellamz Sep 29, 2025
31f1cbd
m
ajewellamz Sep 29, 2025
eb58046
Adding duvet for a specific Ruby test server (#26)
seebees Sep 29, 2025
d3d1e52
m
ajewellamz Sep 29, 2025
f4950a3
m
ajewellamz Sep 29, 2025
bbeb250
Merge branch 'fireegg-test-servers' into ajewell/cpp-v3
ajewellamz Sep 29, 2025
4f0fdaa
m
ajewellamz Sep 30, 2025
631937b
m
ajewellamz Sep 30, 2025
40fcdd5
m
ajewellamz Sep 30, 2025
1baacca
m
ajewellamz Sep 30, 2025
b0c87dc
m
ajewellamz Sep 30, 2025
770fb9e
m
ajewellamz Sep 30, 2025
7d9308e
m
ajewellamz Sep 30, 2025
cc83885
m
ajewellamz Sep 30, 2025
ef25eca
Merge pull request #21 from aws/ajewell/cpp-v3
ajewellamz Sep 30, 2025
b13fd0b
chore: add s3ec-java (transition & improved) test server (#25)
imabhichow Sep 30, 2025
458bf9f
add duvet everywhere (#28)
seebees Sep 30, 2025
68e5853
chore: add suffix to test-objects to avoid accidental collisions (#32)
josecorella Oct 1, 2025
b1b7f81
Add a filter to _everything_ (#30)
seebees Oct 2, 2025
c41a87b
chore: add php v2 transition server (#33)
josecorella Oct 3, 2025
cb01d31
feat(test-server): Add Go V4 test server (#12)
lucasmcdonald3 Oct 9, 2025
27459f3
KC and current tests working for Improved Ruby (#34)
seebees Oct 10, 2025
4b71aa2
chore: add .net submodule and run test against it (#13)
rishav-karanjit Oct 14, 2025
9112ec5
let v2 transition read v3 format (#40)
ajewellamz Oct 16, 2025
4ad0e87
Seebees/more complete tests (#36)
seebees Oct 23, 2025
2ab3b81
chore: Dashboard for spec compliance in each language (#38)
lucasmcdonald3 Oct 24, 2025
f961822
chore: run CI on pushes to fireegg-test-servers
lucasmcdonald3 Oct 24, 2025
ce432a7
chore: Bump Go V4 server to spec-complete commit (#43)
lucasmcdonald3 Oct 27, 2025
cda651f
updates to spec and tests (#49)
seebees Oct 27, 2025
db23adf
fix: update spec compliance GH page on push even when `make duvet` fa…
lucasmcdonald3 Oct 27, 2025
8c6db9e
chore: reenable c++ (#52)
ajewellamz Oct 27, 2025
b131869
cpp-v3 test server (#55)
ajewellamz Oct 30, 2025
4849825
Update to latest Ruby unit tests (#53)
seebees Nov 3, 2025
9afa66e
cpp duvet coverage (#58)
ajewellamz Nov 5, 2025
9cc58e5
duvet (#59)
ajewellamz Nov 5, 2025
56c4107
duvet (#61)
ajewellamz Nov 6, 2025
176e745
chore: Kill Ruby (#62)
lucasmcdonald3 Nov 6, 2025
be6dd9a
chore: add instruction file support to TestServer (#56)
kessplas Nov 6, 2025
b3e8f93
chore: add .net transition servers (#48)
rishav-karanjit Nov 7, 2025
c402647
duvet (#67)
ajewellamz Nov 7, 2025
570af0f
Ruby with all annotations (#57)
seebees Nov 7, 2025
47179c5
chore: s3ec-java v4 improved tests server (#42)
imabhichow Nov 10, 2025
3c40ebb
chore: fix instruction file tests for php (#66)
josecorella Nov 10, 2025
7468927
Update ruby to do better auth tag magic (#71)
seebees Nov 10, 2025
fec0319
add all-examples directory, Ruby V2/V3 example (#64)
kessplas Nov 10, 2025
3bc32ed
chore: Add 's3:HeadObject' action to S3 bucket policy (#72)
imabhichow Nov 10, 2025
3e29c21
Go V3 transition server, duvet'ed (#60)
lucasmcdonald3 Nov 10, 2025
9dd9344
chore: Go v4 example, run examples in CI (#65)
lucasmcdonald3 Nov 11, 2025
64db72a
chore: add RSA support to Java and Dotnet test servers and a simple R…
kessplas Nov 11, 2025
34cbbcf
c++ example (#79)
ajewellamz Nov 11, 2025
ae51a01
chore: add php v3 s3ec and php v2 transitional (#45)
josecorella Nov 11, 2025
79a6d46
chore: Run raw keyring test for transitional version (#80)
rishav-karanjit Nov 11, 2025
99cafcf
chore: add .NET improved server (#54)
rishav-karanjit Nov 12, 2025
a287488
chore: turn on raw aes for improved NET (#83)
rishav-karanjit Nov 12, 2025
3fdf5e5
chore: Add Go V3 example (#77)
lucasmcdonald3 Nov 12, 2025
e5a50e5
chore: add net examples (#81)
rishav-karanjit Nov 13, 2025
e52714b
chore: add php examples (#73)
josecorella Nov 13, 2025
174a70f
all one iv (#74)
seebees Nov 13, 2025
b785c9f
chore: update php to use iv of 1s (#89)
josecorella Nov 13, 2025
d948160
bump aws-sdk version (#90)
ajewellamz Nov 13, 2025
a4dc46f
chore: enable java-v3-transition test server (#70)
imabhichow Nov 13, 2025
af3811e
chore: enable php instruction file tests (#87)
josecorella Nov 13, 2025
ba8ce27
chore: turn on .NET after IV update (#94)
rishav-karanjit Nov 14, 2025
d758421
bump sdk for duvet (#97)
ajewellamz Nov 14, 2025
a781248
chore: java examples (#88)
imabhichow Nov 14, 2025
e5facbd
chore: Bump Go to head of main for updated Duvet (#93)
lucasmcdonald3 Nov 14, 2025
1d25946
chore: Use symbolic link in examples (#91)
rishav-karanjit Nov 14, 2025
c9c47b8
chore: add instruction file tests for raw RSA (#95)
rishav-karanjit Nov 14, 2025
acac674
chore: java fix - duvet (#96)
imabhichow Nov 14, 2025
8da4431
ruby spec updates (#101)
seebees Nov 14, 2025
0a71f3e
chore: run php ruby decrypt for ins file (#98)
rishav-karanjit Nov 15, 2025
73081bf
bump cpp sdk version (#100)
ajewellamz Nov 17, 2025
bcc274d
Add migration example (#111)
ajewellamz Dec 5, 2025
fe13052
Adding tests (#103)
seebees Dec 8, 2025
41f0a00
chore(PHP): run migration examples in ci (#114)
josecorella Dec 10, 2025
c679498
Tests and fix for Ruby pen-test finding (#116)
seebees Dec 12, 2025
5461ae3
chore: add instruction file manipulation test (#119)
josecorella Dec 15, 2025
e2fe1ae
update .NET submodules
kessplas Jan 21, 2026
9ad08cd
fix lint
kessplas Jan 21, 2026
efbb48b
update NET submodule commits
kessplas Jan 22, 2026
865e31c
move Ruby to public repos
kessplas Jan 22, 2026
d1a707c
specify bundler version to match lockfile
kessplas Jan 22, 2026
63c5af1
install xcode tools
kessplas Jan 22, 2026
14e3fb1
try ruby 3.4.7
kessplas Jan 22, 2026
cc4d1cf
supress CVE
kessplas Jan 22, 2026
9b9f4c5
try again to disable nuget audit errors
kessplas Jan 22, 2026
88e8320
fixup NET
kessplas Jan 26, 2026
b9b2470
NET again
kessplas Jan 26, 2026
d396df7
move PHP, CPP over to public repos
kessplas Jan 26, 2026
3c5b79d
make C++ examples use public repo
kessplas Jan 26, 2026
5c5767a
no token for C++
kessplas Jan 26, 2026
d5a4233
fix Duvet
kessplas Jan 26, 2026
7bcf5eb
disable CURRENT tests
kessplas Jan 27, 2026
a11430c
fix compile
kessplas Jan 27, 2026
9626325
delete cpp-v2-server
kessplas Jan 28, 2026
51e7071
delete Java, Go, PHP current servers
kessplas Jan 30, 2026
bc44611
remove NET V2
kessplas Jan 30, 2026
56cba03
delete examples
kessplas Jan 30, 2026
a277b60
fix CI
kessplas Jan 30, 2026
1d9fac0
remove commented out code from java-tests
kessplas Jan 30, 2026
7e5547d
tweak cpp client to maybe have fewer timeouts
kessplas Jan 30, 2026
8ddb8f4
point to public Java, Go repos
kessplas Jan 30, 2026
45c5de0
fix ci branch name
kessplas Jan 30, 2026
63e457f
Merge branch 'staging' into kess/fix-ci
kessplas Jan 30, 2026
fef65e4
fix merge error
kessplas Jan 30, 2026
da904a5
remove PAT
kessplas Jan 30, 2026
76d559f
dynamically load version from submodule pom
kessplas Jan 30, 2026
d8a2e21
use HTTPS
kessplas Jan 30, 2026
06b3a75
restore PAT
kessplas Jan 30, 2026
6cfa131
restore Python integ tests
kessplas Jan 30, 2026
727f05d
rename tests to testserver tests
kessplas Jan 30, 2026
d9e7a35
apply PR feedback
kessplas Feb 2, 2026
9f65202
new PAT
kessplas Feb 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .github/workflows/all-ci.yml
Comment thread
texastony marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: All CI

on:
push:
branches: [ main, staging ]
pull_request:
workflow_dispatch:
inputs:
python-version:
description: 'Python version to use'
default: '3.11'
required: false
type: string

jobs:
python-lint:
name: Lint
uses: ./.github/workflows/lint.yml

run-test-server:
permissions:
id-token: write
contents: read
name: Run TestServer Tests
uses: ./.github/workflows/test-server.yml
with:
python-version: ${{ inputs.python-version || '3.11' }}
secrets: inherit

python-integ:
permissions:
id-token: write
contents: read
name: Python Integration Tests
uses: ./.github/workflows/python-integ.yml
with:
python-version: ${{ inputs.python-version || '3.11' }}
secrets: inherit

run-duvet-test-server:
permissions:
id-token: write
contents: read
pages: write
name: Run Duvet
uses: ./.github/workflows/duvet-test-server.yml
secrets: inherit
104 changes: 104 additions & 0 deletions .github/workflows/duvet-test-server.yml
Comment thread
kessplas marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Generate Duvet Report for TestServer

on:
workflow_call:
# Optional inputs that can be provided when calling this workflow

jobs:
duvet:
runs-on: macos-latest
permissions:
id-token: write
contents: read
pages: write

steps:
- name: Checkout code
uses: actions/checkout@v5
with:
submodules: true
token: ${{ secrets.PAT_FOR_SPEC }}

- name: Checkout CPP code cpp-v3
uses: actions/checkout@v5
with:
submodules: recursive
repository: aws/aws-sdk-cpp
ref: main
path: test-server/cpp-v3-server/aws-sdk-cpp/

- name: Setup Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable

- name: Clone duvet repository
run: git clone https://github.com/awslabs/duvet.git /tmp/duvet

- name: Build and install duvet
run: |
cd /tmp/duvet
cargo xtask build
cargo install --path ./duvet

- name: Run duvet
if: always()
run: cd test-server && make duvet

- name: Upload duvet reports
if: always()
uses: actions/upload-artifact@v4
with:
name: reports
include-hidden-files: true
path: test-server/*-server/.duvet/reports/report.html

- name: Generate compliance dashboard
if: always()
run: |
cd test-server/spec-compliance-dashboard
python generate_compliance_dashboard.py

- name: Create dashboard redirect index.html
if: always()
run: |
cat > test-server/index.html << 'EOF'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=spec-compliance-dashboard/compliance_homepage.html">
<title>Redirecting to Compliance Dashboard...</title>
</head>
<body>
<p>Redirecting to <a href="spec-compliance-dashboard/compliance_homepage.html">Compliance Dashboard</a>...</p>
</body>
</html>
EOF

- name: Upload compliance dashboard
if: always()
uses: actions/upload-artifact@v4
with:
name: compliance-dashboard
include-hidden-files: true
path: |
test-server/spec-compliance-dashboard/compliance_homepage.html
test-server/*/compliance_summary_report.html
test-server/*/.duvet/reports/report.html
test-server/spec-compliance-dashboard/templates/*
test-server/index.html

- name: Setup Pages
if: always() && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/fireegg-test-servers') && github.event_name == 'push'
uses: actions/configure-pages@v5

- name: Upload Pages artifact
if: always() && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/fireegg-test-servers') && github.event_name == 'push'
uses: actions/upload-pages-artifact@v3
with:
path: test-server/

- name: Deploy to GitHub Pages
if: always() && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/fireegg-test-servers') && github.event_name == 'push'
uses: actions/deploy-pages@v4
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Comment thread
kessplas marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
lint:
runs-on: ubuntu-latest
runs-on: macos-15

steps:
- name: Checkout code
Expand Down
28 changes: 0 additions & 28 deletions .github/workflows/main.yml

This file was deleted.

57 changes: 57 additions & 0 deletions .github/workflows/python-integ.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Python Integration Tests

on:
workflow_call:
inputs:
python-version:
description: "Python version to use"
default: "3.11"
required: false
type: string

jobs:
python-integ:
runs-on: macos-14-large
permissions:
id-token: write
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v5
with:
submodules: false

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python-version || '3.11' }}

- name: Cache uv dependencies
uses: actions/cache@v4
with:
path: ~/.cache/uv
key: ${{ runner.os }}-uv-${{ hashFiles('./test-server/python-v3-server/**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-uv-

- name: Install Uv
run: pip install uv

- name: Install dependencies
run: make install

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::370957321024:role/S3EC-Python-Github-test-role
aws-region: us-west-2

- name: Run unit tests
run: make test-unit

- name: Run integration tests
run: make test-integration
env:
CI_S3_BUCKET: ${{ vars.CI_S3_BUCKET }}
CI_KMS_KEY_ALIAS: ${{ vars.CI_KMS_KEY_ALIAS }}
150 changes: 150 additions & 0 deletions .github/workflows/test-server.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Run TestServer Tests

on:
workflow_call:
# Optional inputs that can be provided when calling this workflow
inputs:
python-version:
description: "Python version to use"
default: "3.11"
required: false
type: string

jobs:
test-server:
runs-on: macos-14-large
permissions:
id-token: write
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v5
with:
submodules: false
token: ${{ secrets.PAT_FOR_SPEC }}

# There are a lot of submodules here
# This initializes the checkouts in parallel (--jobs)
# rather than in series the way actions/checkout@v5 does it.

- name: Get CPU count
id: cpu-count
run: echo "count=$(node -p 'require("os").cpus().length')" >> $GITHUB_OUTPUT

- name: Setup git submodules with PAT
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
git config --global credential.helper store
echo "https://x-token-auth:${{ secrets.PAT_FOR_SPEC }}@github.com" > ~/.git-credentials

- name: Optimize git for performance
run: |
git config --global fetch.parallel ${{ steps.cpu-count.outputs.count }}
git config --global submodule.fetchJobs ${{ steps.cpu-count.outputs.count }}
git config --global remote.origin.tagOpt --no-tags

- name: Checkout submodules with --jobs
run: |
git submodule update --init --depth 1 --single-branch --jobs ${{ steps.cpu-count.outputs.count }}

- name: Update cpp submodules recursively with --jobs
run: |
git submodule update --init --recursive \
--depth 1 --single-branch \
--jobs ${{ steps.cpu-count.outputs.count }} \
--force \
test-server/cpp-v2-transition-server/aws-sdk-cpp \
test-server/cpp-v3-server/aws-sdk-cpp

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4.7"
bundler-cache: true

- name: Set up PHP with Composer
uses: shivammathur/setup-php@verbose
with:
php-version: "8.1"

- name: Install PHP V2 Transition dependencies
working-directory: ./test-server/php-v2-transition-server
shell: bash
run: composer install

- name: Install PHP V3 dependencies
working-directory: ./test-server/php-v3-server
shell: bash
run: composer install

- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.25

- name: Install C++ dependencies
run: |
brew install libmicrohttpd nlohmann-json ossp-uuid

# Cache Gradle dependencies and build outputs
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
test-server/java-tests/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('test-server/java-tests/**/gradle-wrapper.properties', 'test-server/java-tests/**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::370957321024:role/S3EC-Python-Github-test-role
aws-region: us-west-2

- name: Build the servers
run: cd test-server && make build-all-servers
env:
MAKEFLAGS: -j${{ steps.cpu-count.outputs.count }}
AWS_REGION: us-west-2

- name: Start the servers
run: cd test-server && make start-all-servers
env:
AWS_REGION: us-west-2
TEST_SERVER_S3_BUCKET: ${{ vars.TEST_SERVER_S3_BUCKET }}
TEST_SERVER_KMS_KEY_ARN: ${{ vars.TEST_SERVER_KMS_KEY_ARN }}

- name: Wait for servers to start
run: cd test-server && make wait-all-servers
env:
MAKEFLAGS: -j${{ steps.cpu-count.outputs.count }}

- name: Run run-tests
run: cd test-server && make test-servers-run-tests
env:
AWS_REGION: us-west-2
TEST_SERVER_S3_BUCKET: ${{ vars.TEST_SERVER_S3_BUCKET }}
TEST_SERVER_KMS_KEY_ARN: ${{ vars.TEST_SERVER_KMS_KEY_ARN }}
GRADLE_OPTS: "-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.caching=true"

- name: Upload server logs
if: always()
uses: actions/upload-artifact@v4
with:
name: server-logs
path: |
test-server/*/server.log

- name: Stop the servers
run: cd test-server && make test-servers-stop

- name: Upload results
if: always()
uses: actions/upload-artifact@v4
with:
name: results
path: test-server/java-tests/build/reports/tests/integ
Loading
Loading