-
Notifications
You must be signed in to change notification settings - Fork 43
108 lines (91 loc) · 3.13 KB
/
swagger-json.yml
File metadata and controls
108 lines (91 loc) · 3.13 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
name: Sync Swagger to AMRIT-Docs
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
swagger-sync:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout API repo
uses: actions/checkout@v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: maven
- name: Build API (skip tests)
run: mvn -B clean package -DskipTests
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Run API in swagger profile
run: |
nohup java -jar target/identity-api-*.war \
--spring.profiles.active=swagger \
--server.port=9090 \
> app.log 2>&1 &
echo $! > api_pid.txt
- name: Wait for API & fetch Swagger
run: |
for i in {1..40}; do
CODE=$(curl --connect-timeout 2 --max-time 5 -s -o swagger_raw.json -w "%{http_code}" http://localhost:9090/v3/api-docs || true)
if [ "$CODE" = "200" ]; then
jq . swagger_raw.json > identity-api.json || {
echo "Swagger JSON invalid"
cat swagger_raw.json
exit 1
}
if [ "$(jq '.paths | length' identity-api.json)" -eq 0 ]; then
echo "Swagger paths empty – failing"
exit 1
fi
echo "Swagger generated successfully"
exit 0
fi
echo "Waiting for API... ($i)"
sleep 4
done
echo "Swagger not generated"
cat app.log || true
exit 1
- name: Stop API
if: always()
run: |
# Attempt graceful shutdown by PID
if [ -f api_pid.txt ]; then
PID=$(cat api_pid.txt)
kill -TERM "$PID" 2>/dev/null || true
sleep 2
kill -9 "$PID" 2>/dev/null || true
fi
# Fallback: kill whatever is listening on port 9090
fuser -k 9090/tcp 2>/dev/null || true
sleep 2
# Force-kill if still lingering
fuser -k -KILL 9090/tcp 2>/dev/null || true
- name: Checkout AMRIT-Docs
uses: actions/checkout@v4
with:
repository: PSMRI/AMRIT-Docs
token: ${{ secrets.DOCS_REPO_TOKEN }}
path: amrit-docs
fetch-depth: 0
- name: Copy Swagger JSON
run: |
mkdir -p amrit-docs/docs/swagger
cp identity-api.json amrit-docs/docs/swagger/identity-api.json
- name: Create Pull Request
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.DOCS_REPO_TOKEN }}
path: amrit-docs
branch: auto/swagger-update-identity-api
base: main
commit-message: "chore(docs): auto-update identity-api swagger"
title: "chore(docs): auto-update identity-api swagger"
delete-branch: true
body: |
This PR automatically updates identity-api Swagger JSON
from the latest main branch build.