feat: store claims on additionalProperties (#4000) #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Verify and Publish OpenAPI Specs | |
on: | |
workflow_call: | |
inputs: | |
version: | |
required: true | |
description: "The version under which the API should be published" | |
type: string | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Publish-To-SwaggerHub: | |
# do NOT run on forks. The Org ("edc") is unique all across SwaggerHub | |
if: github.repository == 'eclipse-edc/Connector' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
apiGroup: [ 'public-api', 'management-api', 'control-api' ] | |
env: | |
rootDir: resources/openapi/yaml/${{ matrix.apiGroup }} | |
SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_TOKEN }} | |
SWAGGERHUB_USER: ${{ secrets.SWAGGERHUB_USER }} | |
VERSION: ${{ github.event.inputs.version || inputs.version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: eclipse-edc/.github/.github/actions/setup-build@main | |
- uses: actions/setup-node@v4 | |
# merge together all api groups | |
- name: Generate API Specs | |
run: | | |
# give option to override | |
cmd="" | |
if [ ! -z $VERSION ]; then | |
cmd="-Pversion=$VERSION" | |
fi | |
./gradlew resolve | |
./gradlew ${cmd} -PapiTitle="${{ matrix.apiGroup }}" -PapiDescription="REST API documentation for the ${{ matrix.apiGroup }}" :mergeApiSpec --input=${{ env.rootDir }} --output=${{ matrix.apiGroup }}.yaml | |
# install swaggerhub CLI | |
- name: Install SwaggerHub CLI | |
run: npm i -g swaggerhub-cli | |
# create API, will fail if exists | |
- name: Create API | |
continue-on-error: true | |
run: | | |
swaggerhub api:create ${{ env.SWAGGERHUB_USER }}/${{ matrix.apiGroup }} -f ${{ matrix.apiGroup }}.yaml --visibility=public --published=unpublish | |
# Post snapshots of the API to SwaggerHub as "unpublished", because published APIs cannot be overwritten | |
- name: Publish API Specs to SwaggerHub | |
run: | | |
# coalesce $VERSION, or whatever's stored in gradle.properties | |
vers=${VERSION:-$(grep "version" gradle.properties | awk -F= '{print $2}')} | |
if [[ $vers != *-SNAPSHOT ]]; then | |
echo "no snapshot, will set the API to 'published'"; | |
swaggerhub api:update ${{ env.SWAGGERHUB_USER }}/${{ matrix.apiGroup }} -f ${{ matrix.apiGroup }}.yaml --visibility=public --published=publish | |
swaggerhub api:setdefault ${{ env.SWAGGERHUB_USER }}/${{ matrix.apiGroup }}/$vers | |
else | |
echo "snapshot, will set the API to 'unpublished'"; | |
swaggerhub api:update ${{ env.SWAGGERHUB_USER }}/${{ matrix.apiGroup }} -f ${{ matrix.apiGroup }}.yaml --visibility=public --published=unpublish | |
fi |