name: Submit SDK to Catalog author: hedger description: | This action checks if SDK exists in the catalog and if not, adds and/or publishes it. inputs: catalog-url: description: The URL of the Catalog API. Must not be empty or end with a /. required: true catalog-api-token: description: The token to use to authenticate with the Catalog API. Must not be empty. required: true firmware-api: description: Fimware's API version, major.minor required: true firmware-target: description: Firmware's target, e.g. f7/f18 required: true firmware-version: description: Firmware's version, e.g. 0.13.37-rc3, or 0.13.37 required: true runs: using: composite steps: - name: Check inputs shell: bash run: | if [ -z "${{ inputs.catalog-url }}" ] ; then echo "Invalid catalog-url: ${{ inputs.catalog-url }}" exit 1 fi if [ -z "${{ inputs.catalog-api-token }}" ] ; then echo "Invalid catalog-api-token: ${{ inputs.catalog-api-token }}" exit 1 fi if ! echo "${{ inputs.firmware-api }}" | grep -q "^[0-9]\+\.[0-9]\+$" ; then echo "Invalid firmware-api: ${{ inputs.firmware-api }}" exit 1 fi if ! echo "${{ inputs.firmware-target }}" | grep -q "^f[0-9]\+$" ; then echo "Invalid firmware-target: ${{ inputs.firmware-target }}" exit 1 fi if ! echo "${{ inputs.firmware-version }}" | grep -q "^[0-9]\+\.[0-9]\+\.[0-9]\+\(-rc\)\?\([0-9]\+\)\?$" ; then echo "Invalid firmware-version: ${{ inputs.firmware-version }}" exit 1 fi - name: Submit SDK shell: bash run: | curl -sX 'GET' \ '${{ inputs.catalog-url }}/api/v0/0/sdk?length=500' \ -H 'Accept: application/json' > sdk_versions.json if jq -r -e ".[] | select((.api == \"${{ inputs.firmware-api }}\") and .target == \"${{ inputs.firmware-target }}\")" sdk_versions.json > found_sdk.json ; then echo "API version ${{ inputs.firmware-api }} already exists in catalog" if [ $(jq -r -e ".released_at" found_sdk.json) != "null" ] ; then echo "API version is already released" exit 0 fi if ! echo "${{ inputs.firmware-version }}" | grep -q -- "-rc" ; then SDK_ID=$(jq -r ._id found_sdk.json) echo "Marking SDK $SDK_ID as released" curl -X 'POST' \ "${{ inputs.catalog-url }}/api/v0/0/sdk/${SDK_ID}/release" \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ${{ inputs.catalog-api-token }}' \ -d '' fi else echo "API version ${{ inputs.firmware-api }} doesn't exist in catalog, adding" curl -X 'POST' \ '${{ inputs.catalog-url }}/api/v0/0/sdk' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ${{ inputs.catalog-api-token }}' \ -H 'Content-Type: application/json' \ -d "{\"name\": \"${{ inputs.firmware-version }}\", \"target\": \"${{ inputs.firmware-target }}\", \"api\": \"${{ inputs.firmware-api }}\"}" fi