diff --git a/.github/workflows/oasdiff.yml b/.github/workflows/oasdiff.yml new file mode 100644 index 0000000000..463d95f898 --- /dev/null +++ b/.github/workflows/oasdiff.yml @@ -0,0 +1,78 @@ +--- +name: "OAS Breaking Changes" + + +defaults: + run: + shell: bash + +on: + pull_request: + branches: + - main + + workflow_dispatch: + inputs: + revision_tag: + required: true + type: string + description: "Revision tag to check the breaking changes in the OAS" + base_tag: + required: false + type: string + description: "Base tag to check the breaking changes in the OAS" + default: "main" + +# https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/prism-agent-v1.29.0/prism-agent/service/api/http/prism-agent-openapi-spec.yaml +# https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/main/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml + +jobs: + oasdiff-breaking: + name: "Open API specification breaking changes detection" + runs-on: ubuntu-latest + steps: + - name: Resolve the base OpenAPI spec URL + run: | + BASE_TAG="${{ github.event.inputs.base_tag }}" + echo "Base tag: $BASE_TAG" + if [[ $BASE_TAG == 'cloud-agent-v*' ]]; then + echo "BASE_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$BASE_TAG/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ $BASE_TAG == 'prism-agent-v*' ]]; then + echo "BASE_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$BASE_TAG/prism-agent/service/api/http/prism-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ $BASE_TAG == 'main' ]]; then + echo "BASE_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$BASE_TAG/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ ${{ github.event_name }} == 'pull_request' ]]; then + echo "BASE_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/main/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + fi + + - name: Resolve the revision OpenAPI spec URL + run: | + REV_TAG="${{ github.event.inputs.revision_tag }}" + echo "Revision tag: $REV_TAG" + if [[ $REV_TAG == 'cloud-agent-v*' ]]; then + echo "REV_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$REV_TAG/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ $REV_TAG == 'prism-agent-v*' ]]; then + echo "REV_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$REV_TAG/prism-agent/service/api/http/prism-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ $REV_TAG == 'main' ]]; then + echo "REV_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$REV_TAG/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + elif [[ ${{ github.event_name }} == 'pull_request' ]]; then + BRANCH_NAME=${{ github.head_ref || github.ref_name }} + echo "REV_URL=https://raw.githubusercontent.com/hyperledger/identus-cloud-agent/$BRANCH_NAME/cloud-agent/service/api/http/cloud-agent-openapi-spec.yaml" >> $GITHUB_ENV + fi + + - name: Check URLS + run: | + echo "Base url: ${{ env.BASE_URL }}" + echo "Revision url: ${{ env.REV_URL }}" + + - name: Running OpenAPI Spec diff action + uses: oasdiff/oasdiff-action/breaking@main + with: + fail-on-diff: false + base: ${{ env.BASE_URL }} + revision: ${{ env.REV_URL }} + + + + +