117 lines
3.2 KiB
Bash
Executable File
117 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# directory of this script
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
echo "Script directory: $SCRIPT_DIR"
|
|
|
|
# Check for GITEA_TOKEN_DEPLOY or GITEA_TOKEN
|
|
if [ -n "$GITEA_TOKEN_DEPLOY" ]; then
|
|
TOKEN="$GITEA_TOKEN_DEPLOY"
|
|
echo "Using GITEA_TOKEN_DEPLOY"
|
|
elif [ -n "$GITEA_TOKEN" ]; then
|
|
TOKEN="$GITEA_TOKEN"
|
|
echo "Using GITEA_TOKEN"
|
|
else
|
|
echo "Neither GITEA_TOKEN_DEPLOY nor GITEA_TOKEN environment variable set!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
$SCRIPT_DIR/multibuild.sh
|
|
BUILD_DIR=$SCRIPT_DIR/build
|
|
|
|
OLD_PWD=$PWD
|
|
cd $SCRIPT_DIR
|
|
|
|
|
|
if [ ! -f "output/dropshell.x86_64" ]; then
|
|
echo "output/dropshell.x86_64 not found!" >&2
|
|
echo "Please run multibuild.sh first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "output/dropshell.aarch64" ]; then
|
|
echo "output/dropshell.aarch64 not found!" >&2
|
|
echo "Please run multibuild.sh first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
TAG=$("$SCRIPT_DIR/output/dropshell.x86_64" --version)
|
|
[ -z "$TAG" ] && echo "Failed to get version from dropshell.x86_64" >&2 && exit 1
|
|
|
|
echo "Publishing dropshell version $TAG"
|
|
|
|
# make sure we've commited.
|
|
git add "$SCRIPT_DIR/../" && git commit -m "dropshell release $TAG" && git push
|
|
|
|
|
|
# Find repo info from .git/config
|
|
REPO_URL=$(git config --get remote.origin.url)
|
|
if [[ ! $REPO_URL =~ gitea ]]; then
|
|
echo "Remote origin is not a Gitea repository: $REPO_URL" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Extract base URL, owner, and repo
|
|
# Example: https://gitea.example.com/username/reponame.git
|
|
BASE_URL=$(echo "$REPO_URL" | sed -E 's#(https?://[^/]+)/.*#\1#')
|
|
OWNER=$(echo "$REPO_URL" | sed -E 's#.*/([^/]+)/[^/]+(\.git)?$#\1#')
|
|
REPO=$(echo "$REPO_URL" | sed -E 's#.*/([^/]+)(\.git)?$#\1#')
|
|
|
|
API_URL="$BASE_URL/api/v1/repos/$OWNER/$REPO"
|
|
|
|
# Create release
|
|
RELEASE_DATA=$(cat <<EOF
|
|
{
|
|
"tag_name": "$TAG",
|
|
"name": "$TAG",
|
|
"body": "dropshell release $TAG",
|
|
"draft": false,
|
|
"prerelease": false
|
|
}
|
|
EOF
|
|
)
|
|
|
|
# Capture stdout and stderr of the curl command
|
|
CURL_OUTPUT=$(curl -X POST "$API_URL/releases" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: token $TOKEN" \
|
|
-d "$RELEASE_DATA" 2>&1)
|
|
|
|
# Extract the release ID from the captured output
|
|
RELEASE_ID=$(echo "$CURL_OUTPUT" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
|
|
|
if [ -z "$RELEASE_ID" ]; then
|
|
echo "Failed to create release on Gitea." >&2
|
|
echo "Release ID returned: $RELEASE_ID" >&2
|
|
echo "Curl Output/Error:" >&2
|
|
echo "$CURL_OUTPUT" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Upload binaries and install.sh
|
|
for FILE in dropshell.x86_64 dropshell.aarch64 install.sh server_autosetup.sh; do
|
|
if [ -f "output/$FILE" ]; then
|
|
filetoupload="output/$FILE"
|
|
elif [ -f "../$FILE" ]; then
|
|
filetoupload="../$FILE"
|
|
elif [ -f "$FILE" ]; then
|
|
filetoupload="$FILE"
|
|
else
|
|
echo "File $FILE not found!" >&2
|
|
continue
|
|
fi
|
|
|
|
# Auto-detect content type
|
|
ctype=$(file --mime-type -b "$filetoupload")
|
|
|
|
curl -s -X POST "$API_URL/releases/$RELEASE_ID/assets?name=$FILE" \
|
|
-H "Content-Type: $ctype" \
|
|
-H "Authorization: token $TOKEN" \
|
|
--data-binary @"$filetoupload"
|
|
echo "Uploaded $FILE to release $TAG as $ctype."
|
|
done
|
|
|
|
echo "Published dropshell version $TAG to $REPO_URL (tag $TAG) with binaries."
|
|
|
|
cd $OLD_PWD |