Skip to content

Commit d863b94

Browse files
committed
update workflows
1 parent e527c25 commit d863b94

1 file changed

Lines changed: 68 additions & 180 deletions

File tree

.github/workflows/build.yml

Lines changed: 68 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -1,195 +1,83 @@
1-
name: Build Schema Converters
1+
name: Build sub-packages
2+
3+
# Fast per-subpackage build checks — verifies Java and Node compile and
4+
# their converter registries load correctly. Full integration testing
5+
# (Flask API + Docker) is in ci.yml.
26

37
on:
48
push:
5-
branches: [ main, develop ]
9+
branches: [main, develop]
610
pull_request:
7-
branches: [ main ]
11+
branches: [main]
812

913
jobs:
1014
build-node:
15+
name: Build Node.js converter
1116
runs-on: ubuntu-latest
1217

1318
steps:
14-
- uses: actions/checkout@v4
15-
16-
- name: Use Node.js 18.x
17-
uses: actions/setup-node@v4
18-
with:
19-
node-version: '18'
20-
cache: 'npm'
21-
cache-dependency-path: schema-conversion-orchestrator/external_converters/node/package-lock.json
22-
23-
- name: Install Node.js dependencies
24-
working-directory: schema-conversion-orchestrator/external_converters/node
25-
run: npm ci
26-
27-
- name: Build TypeScript
28-
working-directory: schema-conversion-orchestrator/external_converters/node
29-
run: npm run build
30-
31-
- name: Test Node.js converter
32-
working-directory: schema-conversion-orchestrator/external_converters/node
33-
run: |
34-
echo '{"sourceLanguage":"SHACL","targetLanguage":"JsonSchema","schema":"test schema"}' > test.json
35-
node dist/index.js convert test.json
36-
node dist/index.js list
37-
38-
- name: Upload Node.js artifacts
39-
uses: actions/upload-artifact@v4
40-
with:
41-
name: node-converter
42-
path: |
43-
schema-conversion-orchestrator/external_converters/node/*.js
44-
schema-conversion-orchestrator/external_converters/node/converters/*.js
45-
schema-conversion-orchestrator/external_converters/node/package.json
19+
- uses: actions/checkout@v4
20+
21+
- name: Set up Node.js 18
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: "18"
25+
cache: npm
26+
cache-dependency-path: schema-conversion-orchestrator/external_converters/node/package-lock.json
27+
28+
- name: Install dependencies
29+
working-directory: schema-conversion-orchestrator/external_converters/node
30+
run: npm ci
31+
32+
- name: Build TypeScript
33+
working-directory: schema-conversion-orchestrator/external_converters/node
34+
run: npm run build
35+
36+
- name: Smoke-test — list converters
37+
working-directory: schema-conversion-orchestrator/external_converters/node
38+
run: node dist/index.js list
39+
40+
- name: Upload dist artifact
41+
uses: actions/upload-artifact@v4
42+
with:
43+
name: node-converter
44+
retention-days: 1
45+
path: |
46+
schema-conversion-orchestrator/external_converters/node/dist/
47+
schema-conversion-orchestrator/external_converters/node/package.json
48+
schema-conversion-orchestrator/external_converters/node/package-lock.json
4649
4750
build-java:
51+
name: Build Java converter
4852
runs-on: ubuntu-latest
4953

5054
steps:
51-
- uses: actions/checkout@v4
52-
53-
- name: Set up JDK 11
54-
uses: actions/setup-java@v4
55-
with:
56-
java-version: '11'
57-
distribution: 'temurin'
58-
59-
- name: Cache Maven dependencies
60-
uses: actions/cache@v4
61-
with:
62-
path: ~/.m2
63-
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
64-
65-
- name: Build with Maven
66-
working-directory: schema-conversion-orchestrator/external_converters/java
67-
run: mvn clean compile package
68-
69-
- name: Test Java converter
70-
working-directory: schema-conversion-orchestrator/external_converters/java
71-
run: |
72-
echo '{"sourceLanguage":"Xsd","targetLanguage":"Dtd","schema":"test schema"}' > test.json
73-
java -jar converter.jar convert test.json
74-
java -jar converter.jar list
75-
76-
- name: Upload Java artifacts
77-
uses: actions/upload-artifact@v4
78-
with:
79-
name: java-converter
80-
path: |
81-
schema-conversion-orchestrator/external_converters/java/converter.jar
82-
83-
test-integration:
84-
needs: [build-node, build-java]
85-
runs-on: ubuntu-latest
86-
87-
steps:
88-
- uses: actions/checkout@v4
89-
90-
- name: Set up Python 3.11
91-
uses: actions/setup-python@v4
92-
with:
93-
python-version: '3.11'
94-
95-
- name: Set up Node.js 18.x
96-
uses: actions/setup-node@v4
97-
with:
98-
node-version: '18'
99-
100-
- name: Set up JDK 11
101-
uses: actions/setup-java@v4
102-
with:
103-
java-version: '11'
104-
distribution: 'temurin'
105-
106-
- name: Download Node.js artifacts
107-
uses: actions/download-artifact@v4
108-
with:
109-
name: node-converter
110-
path: schema-conversion-orchestrator/external_converters/node/
111-
112-
- name: Download Java artifacts
113-
uses: actions/download-artifact@v4
114-
with:
115-
name: java-converter
116-
path: schema-conversion-orchestrator/external_converters/java/
117-
118-
- name: Install Python dependencies
119-
run: |
120-
python -m pip install --upgrade pip
121-
pip install flask requests
122-
123-
- name: Make converters executable
124-
run: |
125-
chmod +x schema-conversion-orchestrator/external_converters/java/converter.jar
126-
127-
- name: Install Python dependencies
128-
working-directory: schema-conversion-orchestrator
129-
run: |
130-
python -m pip install --upgrade pip
131-
pip install -r requirements.txt
132-
133-
- name: Test integration
134-
run: |
135-
# Start the Flask app in background
136-
python schema-conversion-orchestrator/app.py &
137-
FLASK_PID=$!
138-
139-
# Wait for Flask to start
140-
sleep 5
141-
142-
# Test health endpoint
143-
curl -f http://localhost:5002/health || exit 1
144-
145-
# Test converters list
146-
curl -f http://localhost:5002/converters || exit 1
147-
148-
# Test conversion (if converters are available)
149-
curl -f -X POST http://localhost:5002/convert \
150-
-H "Content-Type: application/json" \
151-
-d '{"sourceLanguage":"SHACL","targetLanguage":"JsonSchema","schema":"test schema"}' || echo "No SHACL->JsonSchema converter available"
152-
153-
# Kill Flask app
154-
kill $FLASK_PID
155-
156-
build-docker:
157-
needs: [build-node, build-java]
158-
runs-on: ubuntu-latest
159-
160-
steps:
161-
- uses: actions/checkout@v4
162-
163-
- name: Download Node.js artifacts
164-
uses: actions/download-artifact@v4
165-
with:
166-
name: node-converter
167-
path: schema-conversion-orchestrator/external_converters/node/
168-
169-
- name: Download Java artifacts
170-
uses: actions/download-artifact@v4
171-
with:
172-
name: java-converter
173-
path: schema-conversion-orchestrator/external_converters/java/
174-
175-
- name: Build Docker image
176-
run: docker build -t schema-converter:latest schema-conversion-orchestrator/
177-
178-
- name: Test Docker image
179-
run: |
180-
docker run --rm -d -p 5002:5002 --name test-converter schema-converter:latest
181-
sleep 10
182-
curl -f http://localhost:5002/health || exit 1
183-
docker stop test-converter
184-
185-
- name: Save Docker image
186-
if: github.ref == 'refs/heads/main'
187-
run: |
188-
docker save schema-converter:latest | gzip > schema-converter.tar.gz
189-
190-
- name: Upload Docker image artifact
191-
if: github.ref == 'refs/heads/main'
192-
uses: actions/upload-artifact@v4
193-
with:
194-
name: docker-image
195-
path: schema-converter.tar.gz
55+
- uses: actions/checkout@v4
56+
57+
- name: Set up JDK 11
58+
uses: actions/setup-java@v4
59+
with:
60+
java-version: "11"
61+
distribution: temurin
62+
63+
- name: Cache Maven repository
64+
uses: actions/cache@v4
65+
with:
66+
path: ~/.m2/repository
67+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
68+
restore-keys: ${{ runner.os }}-maven-
69+
70+
- name: Build with Maven
71+
working-directory: schema-conversion-orchestrator/external_converters/java
72+
run: mvn clean package -B -DskipTests
73+
74+
- name: Smoke-test — list converters
75+
working-directory: schema-conversion-orchestrator/external_converters/java
76+
run: java -jar converter.jar list
77+
78+
- name: Upload JAR artifact
79+
uses: actions/upload-artifact@v4
80+
with:
81+
name: java-converter
82+
retention-days: 1
83+
path: schema-conversion-orchestrator/external_converters/java/converter.jar

0 commit comments

Comments
 (0)