Skip to content

Commit d07ea83

Browse files
nickitzaNicki Nixon
andauthored
Phase 0.2 | Add Dry-run test SDK generation across all languages (#172)
* Add SDK generation validation workflow - Implements dry-run testing for all 6 SDK languages (Java, Ruby, Python, JavaScript, C#, Go) - Validates OpenAPI spec can generate SDKs without publishing - Runs on PR changes to mx_platform_api.yml only - Includes comprehensive file structure validation and basic syntax checking - Provides clear pass/fail status with error reporting - Temporary files cleaned up after validation Addresses Phase 0 AC for SDK generation pre-checks * downgrade versions to v3 to match existing usages in sdks * remove intensive full project validation and replae with failing if source files don't exist * on: pull_request, remove path * fix javascript references to be node and point to typescript-axios generator * paths array * restore matrix.generator * Add simple test workflow to debug trigger * Remove paths filter to test workflow trigger * Remove test workflow and fix main SDK validation workflow trigger * test removing setup * trigger test * remove test comment * test comment to test trigger * remove java@v3 setup * silence file logs, stop after finding 1 * quit after finding 1 * remove comments --------- Co-authored-by: Nicki Nixon <nicki.nixon@mx.com>
1 parent c3fd719 commit d07ea83

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
name: Test SDK Generation Validation
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'openapi/mx_platform_api.yml'
7+
8+
jobs:
9+
validate-sdk-generation:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
include:
15+
- language: java
16+
generator: java
17+
display_name: Java
18+
- language: ruby
19+
generator: ruby
20+
display_name: Ruby
21+
- language: python
22+
generator: python
23+
display_name: Python
24+
- language: node
25+
generator: typescript-axios
26+
display_name: Node
27+
- language: csharp
28+
generator: csharp
29+
display_name: C#
30+
- language: go
31+
generator: go
32+
display_name: Go
33+
34+
name: ${{ matrix.display_name }} SDK Generation
35+
36+
steps:
37+
- name: Checkout repository
38+
uses: actions/checkout@v3
39+
40+
- name: Set up Node.js
41+
uses: actions/setup-node@v3
42+
with:
43+
node-version: '20'
44+
45+
- name: Install OpenAPI Generator CLI
46+
run: npm install -g @openapitools/openapi-generator-cli
47+
48+
- name: Create output directory
49+
run: mkdir -p ./sdk-output/${{ matrix.language }}
50+
51+
- name: Generate Test SDK
52+
run: |
53+
openapi-generator-cli generate \
54+
-i openapi/mx_platform_api.yml \
55+
-g ${{ matrix.generator }} \
56+
-o ./sdk-output/${{ matrix.language }} \
57+
--skip-validate-spec
58+
59+
- name: Verify expected files were generated
60+
run: |
61+
echo "Checking for generated files in ./sdk-output/${{ matrix.language }}"
62+
ls -la ./sdk-output/${{ matrix.language }}
63+
64+
cd ./sdk-output/${{ matrix.language }}
65+
66+
# Check for key files based on language
67+
case "${{ matrix.language }}" in
68+
"java")
69+
find . -name "pom.xml" -quit > /dev/null || (echo "❌ Missing pom.xml" && exit 1)
70+
find . -name "*.java" -quit > /dev/null || (echo "❌ No Java files found" && exit 1)
71+
echo "✅ Java SDK structure validated"
72+
;;
73+
"ruby")
74+
find . -name "*.gemspec" -quit > /dev/null || (echo "❌ Missing gemspec file" && exit 1)
75+
find . -name "*.rb" -quit > /dev/null || (echo "❌ No Ruby files found" && exit 1)
76+
echo "✅ Ruby SDK structure validated"
77+
;;
78+
"python")
79+
find . -name "setup.py" -quit > /dev/null || (echo "❌ Missing setup.py" && exit 1)
80+
find . -name "*.py" -quit > /dev/null || (echo "❌ No Python files found" && exit 1)
81+
echo "✅ Python SDK structure validated"
82+
;;
83+
"node")
84+
find . -name "package.json" -quit > /dev/null || (echo "❌ Missing package.json" && exit 1)
85+
find . \( -name "*.ts" -o -name "*.js" \) -quit > /dev/null || (echo "❌ No TypeScript/JavaScript files found" && exit 1)
86+
echo "✅ Node SDK structure validated"
87+
;;
88+
"csharp")
89+
find . -name "*.csproj" -quit > /dev/null || (echo "❌ Missing csproj file" && exit 1)
90+
find . -name "*.cs" -quit > /dev/null || (echo "❌ No C# files found" && exit 1)
91+
echo "✅ C# SDK structure validated"
92+
;;
93+
"go")
94+
find . -name "go.mod" -quit > /dev/null || (echo "❌ Missing go.mod" && exit 1)
95+
find . -name "*.go" -quit > /dev/null || (echo "❌ No Go files found" && exit 1)
96+
echo "✅ Go SDK structure validated"
97+
;;
98+
esac
99+
100+
- name: Clean up
101+
if: always()
102+
run: rm -rf ./sdk-output/${{ matrix.language }}

0 commit comments

Comments
 (0)