|
1 |
| -openapi: '3.0.2' |
2 |
| -info: |
3 |
| - title: DispoAPI |
4 |
| - description: handles inventory changes in MyIT cmdb for DispoTool. |
5 |
| - version: '0.0.1' |
| 1 | +name: Generate html from yml docs and publish to pages |
6 | 2 |
|
7 |
| -servers: |
8 |
| - - url: https://myit-dev.post.ch/api/x_ssagd_dispoapi/dispoapi |
9 |
| - description: development server |
| 3 | +on: |
| 4 | + push: |
| 5 | + branches: |
| 6 | + - main |
10 | 7 |
|
11 |
| -security: |
12 |
| - - BasicAuth: [] |
13 |
| - |
14 |
| -paths: |
15 |
| - /switchDevice: |
16 |
| - patch: |
17 |
| - summary: Switches one device for another in the cmdb, including any children the old device might have had. |
18 |
| - description: tbd |
19 |
| - requestBody: |
20 |
| - content: |
21 |
| - application/json: |
22 |
| - schema: |
23 |
| - type: object |
24 |
| - properties: |
25 |
| - inventoryNumber_old: |
26 |
| - description: "The asset tag of the old device." |
27 |
| - type: string |
28 |
| - inventoryNumber_new: |
29 |
| - description: "The asset tag of the new device." |
30 |
| - type: string |
31 |
| - storage_location: |
32 |
| - description: "The sys-id of the storage location of the old device." |
33 |
| - type: string |
34 |
| - technician: |
35 |
| - description: "The technician performing the action. This string will appear in the activity stream." |
36 |
| - type: string |
37 |
| - comment: |
38 |
| - description: "A comment composed by the technician that will appear in the activity stream." |
39 |
| - type: string |
40 |
| - required: |
41 |
| - - inventoryNumber_old |
42 |
| - - inventoryNumber_new |
43 |
| - - storage_location |
44 |
| - - technician |
45 |
| - - comment |
| 8 | +jobs: |
| 9 | + generate_docs: |
| 10 | + name: Generate HTML Docs |
| 11 | + runs-on: ubuntu-latest |
46 | 12 |
|
47 |
| - responses: |
48 |
| - '200': |
49 |
| - description: OK |
50 |
| - content: |
51 |
| - application/json: |
52 |
| - schema: |
53 |
| - type: object |
54 |
| - properties: |
55 |
| - message: |
56 |
| - type: string |
57 |
| - example: "Device 23282978 was switched for 23271091 successfully." |
58 |
| - '400': |
59 |
| - description: bad request |
60 |
| - content: |
61 |
| - application/json: |
62 |
| - schema: |
63 |
| - type: object |
64 |
| - properties: |
65 |
| - name: |
66 |
| - type: string |
67 |
| - example: "MyItRestException" |
68 |
| - message: |
69 |
| - type: string |
70 |
| - example: "inventoryNumber_old is missing or null in the request body." |
71 |
| - status: |
72 |
| - type: integer |
73 |
| - example: 400 |
74 |
| - '403': |
75 |
| - description: forbidden |
76 |
| - content: |
77 |
| - application/json: |
78 |
| - schema: |
79 |
| - type: object |
80 |
| - properties: |
81 |
| - clazz: |
82 |
| - type: string |
83 |
| - example: "IllegalAccessException" |
84 |
| - status: |
85 |
| - type: integer |
86 |
| - example: 403 |
87 |
| - message: |
88 |
| - type: string |
89 |
| - example: "You are not authorized to access this API" |
90 |
| - '500': |
91 |
| - description: Internal Server Error |
92 |
| - content: |
93 |
| - application/json: |
94 |
| - schema: |
95 |
| - type: object |
96 |
| - properties: |
97 |
| - clazz: |
98 |
| - type: string |
99 |
| - example: "MyItRestException" |
100 |
| - status: |
101 |
| - type: integer |
102 |
| - example: 500 |
103 |
| - message: |
104 |
| - type: string |
105 |
| - example: "something went wrong while writing data to the new device" |
| 13 | + permissions: |
| 14 | + contents: write |
106 | 15 |
|
107 |
| - /installDevice: |
108 |
| - patch: |
109 |
| - summary: Installs a device in the cmdb |
110 |
| - description: tbd |
111 |
| - requestBody: |
112 |
| - content: |
113 |
| - application/json: |
114 |
| - schema: |
115 |
| - type: object |
116 |
| - properties: |
117 |
| - inventoryNumber: |
118 |
| - description: "The asset tag of the device." |
119 |
| - type: string |
120 |
| - location: |
121 |
| - description: "The location of the device." |
122 |
| - type: string |
123 |
| - technician: |
124 |
| - description: "The technician performing the action. This string will appear in the activity stream." |
125 |
| - type: string |
126 |
| - comment: |
127 |
| - description: "A comment composed by the technician that will appear in the activity stream." |
128 |
| - type: string |
129 |
| - assigned_to: |
130 |
| - description: "The sys-id of the user of the device." |
131 |
| - type: string |
132 |
| - cost_center: |
133 |
| - description: "The sys-id of the cost-center of the device." |
134 |
| - type: string |
135 |
| - children: |
136 |
| - description: "Any children to install alongside the device containing the sys-id of the child as well as the name of the relation." |
137 |
| - type: array |
138 |
| - example: [ |
139 |
| - { |
140 |
| - "child" : "0007047387bb39d06dc863540cbb0000", |
141 |
| - "relation" : "Connects to::Connected by" |
142 |
| - }, |
143 |
| - { |
144 |
| - "child" : "0007047387bb39d06dc863540cbb0001", |
145 |
| - "relation" : "Connects to::Connected by" |
146 |
| - } |
147 |
| - ] |
148 |
| - parents: |
149 |
| - description: "Any parents the device has containing the sys-id of the parent as well as the name of the relation." |
150 |
| - type: array |
151 |
| - example: [ |
152 |
| - { |
153 |
| - "parent" : "0007047387bb39d06dc863540cbb0000", |
154 |
| - "relation" : "Connects to::Connected by" |
155 |
| - } |
156 |
| - ] |
157 |
| - required: |
158 |
| - - inventoryNumber |
159 |
| - - location |
160 |
| - - technician |
161 |
| - - comment |
162 |
| - responses: |
163 |
| - '200': |
164 |
| - description: OK |
165 |
| - content: |
166 |
| - application/json: |
167 |
| - schema: |
168 |
| - type: object |
169 |
| - properties: |
170 |
| - message: |
171 |
| - type: string |
172 |
| - example: "Device 23282978 was installed successfully." |
173 |
| - '400': |
174 |
| - description: bad request |
175 |
| - content: |
176 |
| - application/json: |
177 |
| - schema: |
178 |
| - type: object |
179 |
| - properties: |
180 |
| - name: |
181 |
| - type: string |
182 |
| - example: "MyItRestException" |
183 |
| - message: |
184 |
| - type: string |
185 |
| - example: "inventoryNumber is missing or null in the request body." |
186 |
| - status: |
187 |
| - type: integer |
188 |
| - example: 400 |
189 |
| - '403': |
190 |
| - description: forbidden |
191 |
| - content: |
192 |
| - application/json: |
193 |
| - schema: |
194 |
| - type: object |
195 |
| - properties: |
196 |
| - clazz: |
197 |
| - type: string |
198 |
| - example: "IllegalAccessException" |
199 |
| - status: |
200 |
| - type: integer |
201 |
| - example: 403 |
202 |
| - message: |
203 |
| - type: string |
204 |
| - example: "You are not authorized to access this API" |
205 |
| - '500': |
206 |
| - description: Internal Server Error |
207 |
| - content: |
208 |
| - application/json: |
209 |
| - schema: |
210 |
| - type: object |
211 |
| - properties: |
212 |
| - clazz: |
213 |
| - type: string |
214 |
| - example: "MyItRestException" |
215 |
| - status: |
216 |
| - type: integer |
217 |
| - example: 500 |
218 |
| - message: |
219 |
| - type: string |
220 |
| - example: "something went wrong writing data to the new device" |
| 16 | + steps: |
| 17 | + - name: Checkout repository |
| 18 | + |
221 | 19 |
|
222 |
| - /uninstallDevice: |
223 |
| - patch: |
224 |
| - summary: Uninstalls a device in the cmdb including any children passed in the request. |
225 |
| - description: tbd |
226 |
| - requestBody: |
227 |
| - content: |
228 |
| - application/json: |
229 |
| - schema: |
230 |
| - type: object |
231 |
| - properties: |
232 |
| - inventoryNumber: |
233 |
| - description: "The asset tag of the device." |
234 |
| - type: string |
235 |
| - storage_location: |
236 |
| - description: "The sys-id of the storage location of the device." |
237 |
| - type: string |
238 |
| - technician: |
239 |
| - description: "The technician performing the action. This string will appear in the activity stream." |
240 |
| - type: string |
241 |
| - comment: |
242 |
| - description: "A comment composed by the technician that will appear in the activity stream." |
243 |
| - type: string |
244 |
| - children: |
245 |
| - description: "The list of sys-id's of children to uninstall alongside the parent-device. This has to exactly match the existing children in the cmdb." |
246 |
| - type: array |
247 |
| - example: [ |
248 |
| - { |
249 |
| - "child" : "0007047387bb39d06dc863540cbb0000" |
250 |
| - }, |
251 |
| - { |
252 |
| - "child" : "0007047387bb39d06dc863540cbb0001" |
253 |
| - } |
254 |
| - ] |
| 20 | + - name: Check for .yml files |
| 21 | + run: | |
| 22 | + if ls ./*.yml dispoAPI/*.yml 1> /dev/null 2>&1; then |
| 23 | + echo "YAML files found." |
| 24 | + else |
| 25 | + echo "No YAML files found. Exiting." |
| 26 | + exit 1 |
| 27 | + fi |
255 | 28 |
|
256 |
| - required: |
257 |
| - - inventoryNumber |
258 |
| - - storage_location |
259 |
| - - technician |
260 |
| - - comment |
261 |
| - |
262 |
| - responses: |
263 |
| - '200': |
264 |
| - description: OK |
265 |
| - content: |
266 |
| - application/json: |
267 |
| - schema: |
268 |
| - type: object |
269 |
| - properties: |
270 |
| - message: |
271 |
| - type: string |
272 |
| - example: "Device 23282978 was uninstalled successfully." |
273 |
| - '400': |
274 |
| - description: bad request |
275 |
| - content: |
276 |
| - application/json: |
277 |
| - schema: |
278 |
| - type: object |
279 |
| - properties: |
280 |
| - name: |
281 |
| - type: string |
282 |
| - example: "MyItRestException" |
283 |
| - message: |
284 |
| - type: string |
285 |
| - example: "inventoryNumber is missing or null in the request body." |
286 |
| - status: |
287 |
| - type: integer |
288 |
| - example: 400 |
289 |
| - '403': |
290 |
| - description: forbidden |
291 |
| - content: |
292 |
| - application/json: |
293 |
| - schema: |
294 |
| - type: object |
295 |
| - properties: |
296 |
| - clazz: |
297 |
| - type: string |
298 |
| - example: "IllegalAccessException" |
299 |
| - status: |
300 |
| - type: integer |
301 |
| - example: 403 |
302 |
| - message: |
303 |
| - type: string |
304 |
| - example: "You are not authorized to access this API" |
305 |
| - '500': |
306 |
| - description: Internal Server Error |
307 |
| - content: |
308 |
| - application/json: |
309 |
| - schema: |
310 |
| - type: object |
311 |
| - properties: |
312 |
| - clazz: |
313 |
| - type: string |
314 |
| - example: "MyItRestException" |
315 |
| - status: |
316 |
| - type: integer |
317 |
| - example: 500 |
318 |
| - message: |
319 |
| - type: string |
320 |
| - example: "something went wrong writing data to the device" |
| 29 | + - name: Install Node.js |
| 30 | + |
321 | 31 |
|
322 |
| -components: |
323 |
| - securitySchemes: |
324 |
| - BasicAuth: |
325 |
| - type: http |
326 |
| - scheme: basic |
| 32 | + - name: Install Redocly CLI |
| 33 | + run: npm install -g @redocly/cli |
327 | 34 |
|
| 35 | + - name: Generate HTML files |
| 36 | + run: | |
| 37 | + # Generate HTML for YAML files in root directory |
| 38 | + for file in ./*.yml; do |
| 39 | + if [ -f "$file" ]; then |
| 40 | + output_html="${file%.*}.html" |
| 41 | + redocly build-docs -o "$output_html" "$file" |
| 42 | + fi |
| 43 | + done |
| 44 | +
|
| 45 | + # Generate HTML for YAML files in dispoAPI directory |
| 46 | + for file in dispoAPI/*.yml; do |
| 47 | + if [ -f "$file" ]; then |
| 48 | + output_html="dispoAPI/index.html" |
| 49 | + redocly build-docs -o "$output_html" "$file" |
| 50 | + fi |
| 51 | + done |
| 52 | +
|
| 53 | + - name: Add noIndex Meta Tag |
| 54 | + run: | |
| 55 | + for file in ./*.html dispoAPI/*.html; do |
| 56 | + if [ -f "$file" ]; then |
| 57 | + echo "Found HTML file: $file" |
| 58 | + if sed -i '/<head>/a <meta name="robots" content="noindex">' "$file"; then |
| 59 | + echo "Added meta tag to $file successfully." |
| 60 | + else |
| 61 | + echo "Failed to add meta tag to $file." |
| 62 | + fi |
| 63 | + fi |
| 64 | + done |
| 65 | + shell: bash |
| 66 | + |
| 67 | + - name: Set up Git |
| 68 | + run: | |
| 69 | + git config --global user.email "[email protected]" |
| 70 | + git config --global user.name "GitHub Actions" |
| 71 | +
|
| 72 | + - name: Deploy to GitHub Pages |
| 73 | + |
| 74 | + with: |
| 75 | + token: ${{ secrets.GITHUB_TOKEN }} |
| 76 | + branch: gh-pages |
| 77 | + folder: . # Root folder where HTML files are located |
0 commit comments