Skip to content

Commit 4ba8e26

Browse files
ci: automate push to swaggerHub (#697)
1 parent e6109dd commit 4ba8e26

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

.github/workflows/release.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ jobs:
230230
logout: true
231231

232232
- name: Semantic Release
233+
id: semantic-release
233234
uses: cycjimmy/semantic-release-action@b1b432f13acb7768e0c8efdec416d363a57546f2 # v4.1.1
234235
if: steps.cache.outputs.cache-hit != 'true' # do not run if cache hit
235236
with:
@@ -241,3 +242,40 @@ jobs:
241242
@semantic-release/exec@6.0.3
242243
env:
243244
GITHUB_TOKEN: ${{ secrets.ROSIE_TOKEN }}
245+
246+
- name: Check if OpenAPI files changed
247+
id: check-openapi-changes
248+
run: |
249+
git fetch origin main:main
250+
if git diff --name-only main HEAD | grep -q '^internal/controller/openapi/'; then
251+
echo "changed=true" >> $GITHUB_OUTPUT
252+
else
253+
echo "changed=false" >> $GITHUB_OUTPUT
254+
fi
255+
256+
- name: Generate OpenAPI specification
257+
if: steps.semantic-release.outputs.new_release_published == 'true' && steps.check-openapi-changes.outputs.changed == 'true'
258+
run: |
259+
GIN_MODE=debug go run ./cmd/app/main.go
260+
261+
- name: Verify OpenAPI spec was generated
262+
run: |
263+
if [ ! -f "doc/openapi.json" ]; then
264+
exit 1
265+
fi
266+
head -20 doc/openapi.json
267+
268+
- name: Push to SwaggerHub
269+
if: vars.SWAGGERHUB_OWNER != '' && vars.SWAGGERHUB_API_NAME != ''
270+
env:
271+
SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }}
272+
SWAGGERHUB_OWNER: ${{ vars.SWAGGERHUB_OWNER }}
273+
API_NAME: ${{ vars.SWAGGERHUB_API_NAME }}
274+
API_VERSION: ${{ steps.semantic-release.outputs.new_release_version }}
275+
run: |
276+
echo "Pushing OpenAPI spec to SwaggerHub with version ${{ steps.semantic-release.outputs.new_release_version }}..."
277+
curl -X POST "https://api.swaggerhub.com/apis/${SWAGGERHUB_OWNER}/${API_NAME}/${API_VERSION}" \
278+
-H "Authorization: ${SWAGGERHUB_API_KEY}" \
279+
-H "Content-Type: application/json" \
280+
--data-binary @doc/openapi.json \
281+
--fail

0 commit comments

Comments
 (0)