-
Notifications
You must be signed in to change notification settings - Fork 7
129 lines (115 loc) · 4.47 KB
/
sdk-generation-validation.yml
File metadata and controls
129 lines (115 loc) · 4.47 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
name: SDK Generation Validation
on:
pull_request:
jobs:
validate-sdk-generation:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- language: java
generator: java
- language: ruby
generator: ruby
- language: python
generator: python
- language: node
generator: typescript-axios
- language: csharp
generator: csharp
- language: go
generator: go
name: Validate ${{ matrix.language }} SDK Generation
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install OpenAPI Generator CLI
run: npm install -g @openapitools/openapi-generator-cli
- name: Set up Java (required for OpenAPI Generator)
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: Set up language-specific environment
run: |
case "${{ matrix.language }}" in
"java")
echo "Java already set up"
;;
"ruby")
sudo apt-get update
sudo apt-get install -y ruby-full
;;
"python")
python -m pip install --upgrade pip
;;
"node")
echo "Node.js already set up"
;;
"csharp")
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-6.0
;;
"go")
wget -c https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> $GITHUB_ENV
;;
esac
- name: Create output directory
run: mkdir -p ./sdk-output/${{ matrix.language }}
- name: Generate Test SDK
run: |
openapi-generator-cli generate \
-i openapi/mx_platform_api.yml \
-g ${{ matrix.generator }} \
-o ./sdk-output/${{ matrix.language }} \
--skip-validate-spec
- name: Verify expected files were generated
run: |
echo "Checking for generated files in ./sdk-output/${{ matrix.language }}"
ls -la ./sdk-output/${{ matrix.language }}
cd ./sdk-output/${{ matrix.language }}
# Check for key files based on language
case "${{ matrix.language }}" in
"java")
find . -name "pom.xml" || (echo "❌ Missing pom.xml" && exit 1)
find . -name "*.java" || (echo "❌ No Java files found" && exit 1)
echo "✅ Java SDK structure validated"
;;
"ruby")
find . -name "*.gemspec" || (echo "❌ Missing gemspec file" && exit 1)
find . -name "*.rb" || (echo "❌ No Ruby files found" && exit 1)
echo "✅ Ruby SDK structure validated"
;;
"python")
find . -name "setup.py" || (echo "❌ Missing setup.py" && exit 1)
find . -name "*.py" || (echo "❌ No Python files found" && exit 1)
echo "✅ Python SDK structure validated"
;;
"node")
find . -name "package.json" || (echo "❌ Missing package.json" && exit 1)
find . -name "*.ts" -o -name "*.js" || (echo "❌ No TypeScript/JavaScript files found" && exit 1)
echo "✅ Node SDK structure validated"
;;
"csharp")
find . -name "*.csproj" || (echo "❌ Missing csproj file" && exit 1)
find . -name "*.cs" || (echo "❌ No C# files found" && exit 1)
echo "✅ C# SDK structure validated"
;;
"go")
find . -name "go.mod" || (echo "❌ Missing go.mod" && exit 1)
find . -name "*.go" || (echo "❌ No Go files found" && exit 1)
echo "✅ Go SDK structure validated"
;;
esac
- name: Clean up
if: always()
run: rm -rf ./sdk-output/${{ matrix.language }}