diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index da0ef5f..11ec0f8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -34,7 +34,11 @@ jobs: with: args: release --clean - - name: TEST output json (artifacts) - run: echo "${{steps.goreleaser.outputs.artifacts}}" - - name: TEST output json (metadata) - run: echo "${{steps.goreleaser.outputs.metadata}}" + - name: Generate and upload provider.json + run: | + echo '${{steps.goreleaser.outputs.artifacts}}' >artifacts.json + echo '${{steps.goreleaser.outputs.metadata}}' >metadata.json + ./generate-provider-json.sh artifacts.json metadata.json + env: + TERRALIST_API: https://terralist.garm-provider-test.t09.de/v1/api + TERRALIST_API_KEY: ${{ secrets.TERRALIST_API_KEY }} diff --git a/generate-provider-json.sh b/generate-provider-json.sh new file mode 100755 index 0000000..1cd1124 --- /dev/null +++ b/generate-provider-json.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -o errexit + +# This script generates and uploads a terraform provider.json file and uploads it to Terralist + +ARTIFACTS_FILE=$1 +METADATA_FILE=$2 + +TERRALIST_API=${TERRALIST_API:-https://terralist.garm-provider-test.t09.de/v1/api} +TERRALIST_API_KEY=${TERRALIST_API_KEY:-invalid-key} + +VERSION=$(cat $METADATA_FILE | jq -r '.version') + +BASE_URL="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/download" + +if ! [[ "$BASE_URL" =~ "terraform" ]]; then + echo "Error: GITHUB_ environment variables not set correctly" >&2 + exit 1 +fi + +jq --arg base_url "$BASE_URL" --arg version "$VERSION" ' +{ + protocols: ["6"], + + shasums: ( + { + url: ($base_url + "/v" + $version + "/" + (.[] + | select(.type=="Checksum").name)), + signature_url: ($base_url + "/v" + $version + "/" + (.[] + | select(.type=="Signature").name)) + } + ), + + platforms: [ + .[] + | select(.type=="Archive") + | { + os: .goos, + arch: .goarch, + download_url: ($base_url + "/v" + $version + "/" + .name), + shasum: (.extra.Checksum | sub("^sha256:";"")) + } + ] +} +' $ARTIFACTS_FILE >./provider.json + +cat provider.json | jq . + +curl -X POST $TERRALIST_API/providers/edge-connect/${VERSION}/upload \ + -H "Authorization: Bearer x-api-key:$TERRALIST_API_KEY" \ + -d "$(cat ./provider.json)" \ No newline at end of file