Files
monica/scripts/vagrant/build/vagrant-upload.sh
T

76 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -euvo pipefail
GIT_TAG=$(git describe --abbrev=0 --tags)
VERSION=${GIT_TAG##v}
API=https://app.vagrantup.com/api/v1
# Create a new version
response=$(
curl -sSL --header "Content-Type: application/json" --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
"$API/box/monicahq/monicahq/versions" \
--data "{ \
\"version\": { \
\"version\": \"$VERSION\", \
\"description\": \"https://github.com/monicahq/monica/releases/tag/$GIT_TAG\" \
} \
}"
)
if [ $(echo "$response" | jq .success) == "false" ]; then
if [ $(echo "$response" | jq .errors[0]) != "Version has already been taken" ]; then
echo "$response" | jq .errors[0]
exit 1
fi
fi
# Create provider
response=$(
curl -sSL --header "Content-Type: application/json" --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
"$API/box/monicahq/monicahq/version/$VERSION/providers" \
--data "{ \
\"provider\": { \
\"name\": \"virtualbox\" \
} \
}"
)
if [ $(echo "$response" | jq .success) == "false" ]; then
if [ $(echo "$response" | jq .errors[0]) != "Metadata provider must be unique for version" ]; then
echo "$response" | jq .errors[0]
exit 1
fi
fi
# Upload the box
response=$(
curl -sSL --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
"$API/box/monicahq/monicahq/version/$VERSION/provider/virtualbox/upload"
)
if [ $(echo "$response" | jq .success) == "false" ]; then
echo "$response" | jq .errors[0]
exit 1
fi
upload_path=$(echo "$response" | jq .upload_path)
upload_path="${upload_path%\"}"
upload_path="${upload_path#\"}"
curl -fL --progress-bar \
--request PUT \
"$upload_path" \
--upload-file "monicahq-$GIT_TAG.box"
retval=$?
if [ $? -ne 0 ]; then
exit 1
fi
# Publish the version
response=$(
curl -sSL --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
--request PUT \
"$API/box/monicahq/monicahq/version/$VERSION/release"
)
if [ $(echo "$response" | jq .success) == "false" ]; then
echo "$response" | jq .errors[0]
exit 1
fi