101 lines
3.2 KiB
Bash
101 lines
3.2 KiB
Bash
#!/bin/sh
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ -z "${CI_COMMIT_AUTHOR}" ]]; then
|
|
export CI_COMMIT_AUTHOR=drone
|
|
fi
|
|
|
|
if [[ -z "${CI_COMMIT_AUTHOR_EMAIL}" ]]; then
|
|
export CI_COMMIT_AUTHOR_EMAIL=bot@odit.services
|
|
fi
|
|
echo "Setting git user to ${CI_COMMIT_AUTHOR} <${CI_COMMIT_AUTHOR_EMAIL}>"
|
|
|
|
export GIT_AUTHOR_NAME=${CI_COMMIT_AUTHOR}
|
|
export GIT_AUTHOR_EMAIL=${CI_COMMIT_AUTHOR_EMAIL}
|
|
export GIT_COMMITTER_NAME=${CI_COMMIT_AUTHOR}
|
|
export GIT_COMMITTER_EMAIL=${CI_COMMIT_AUTHOR_EMAIL}
|
|
|
|
sleep 3600
|
|
|
|
CURRENTTAG=$(git tag --sort=-creatordate | head -n 1)
|
|
PREVIOUSTAG=$(git tag --sort=-creatordate | head -n 2 | tail -n 1)
|
|
echo "Diff: $PREVIOUSTAG..$CURRENTTAG"
|
|
|
|
ALLCHANGES=$(npx -y @philippdormann/changelogen@1.0.0 --from $PREVIOUSTAG --to $CURRENTTAG --no-output | sed 's/"/\\"/g' | tail -n +6)
|
|
|
|
if [ "${PLUGIN_GITEA_DOMAIN:+set}" = set ]; then
|
|
if [ "${PLUGIN_GITEA_APIKEY:-null}" = null ]; then
|
|
echo "No api key provided";
|
|
exit 1;
|
|
fi
|
|
if [ "${PLUGIN_REPO:-null}" = null ]; then
|
|
echo "Falling back to drone repo name";
|
|
PLUGIN_REPO=$CI_REPO_NAME
|
|
fi
|
|
if [ "${PLUGIN_GITEA_DRAFT:-null}" = null ]; then
|
|
PLUGIN_GITEA_DRAFT=false
|
|
fi
|
|
if [ "${PLUGIN_GITEA_PRERELEASE:-null}" = null ]; then
|
|
PLUGIN_GITEA_PRERELEASE=true
|
|
fi
|
|
|
|
curl --request POST \
|
|
--url "https://$PLUGIN_GITEA_DOMAIN/api/v1/repos/$PLUGIN_REPO/releases" \
|
|
--header "Content-Type: application/json" \
|
|
--header "Authorization: token $PLUGIN_GITEA_APIKEY" \
|
|
-f \
|
|
--data "{
|
|
\"name\": \"$CURRENTTAG\",
|
|
\"body\": \"$ALLCHANGES\",
|
|
\"draft\": $PLUGIN_GITEA_DRAFT,
|
|
\"prerelease\": $PLUGIN_GITEA_PRERELEASE,
|
|
\"tag_name\": \"$CURRENTTAG\"
|
|
}"
|
|
echo "Release created";git push --follow-tags
|
|
fi
|
|
|
|
if [ "${PLUGIN_MATRIX_SERVER:+set}" = set ]; then
|
|
echo "Detected matrix server";
|
|
if [ "${PLUGIN_MATRIX_USER:-null}" = null ]; then
|
|
echo "No matrix username provided";
|
|
exit 3;
|
|
fi
|
|
if [ "${PLUGIN_REPO:-null}" = null ]; then
|
|
echo "No matrix password provided";
|
|
exit 4;
|
|
fi
|
|
if [ "${PLUGIN_MATRIX_ROOM:-null}" = null ]; then
|
|
echo "No matrix room id provided";
|
|
exit 4;
|
|
fi
|
|
|
|
MATRIX_LOGIN=$(curl --request POST \
|
|
--url "https://$PLUGIN_MATRIX_SERVER/_matrix/client/r0/login" \
|
|
--header "Content-Type: application/json" \
|
|
-f \
|
|
--data "{
|
|
\"type\": \"m.login.password\",
|
|
\"user\": \"$PLUGIN_MATRIX_USER\",
|
|
\"password\": \"$PLUGIN_MATRIX_PASSWORD\"
|
|
}")
|
|
MATRIX_TOKEN=$(echo $MATRIX_LOGIN | jq .access_token | sed 's/"//g' )
|
|
|
|
if [ "${PLUGIN_VERSION_PREFIX:-null}" = null ]; then
|
|
echo "Falling back to empty version prefix";
|
|
PLUGIN_VERSION_PREFIX=""
|
|
fi
|
|
FORMATTED_CHANGES=$(echo "# $PLUGIN_VERSION_PREFIX$CURRENTTAG \n $ALLCHANGES" | pandoc -f markdown -t html | sed 's/"/'"'"'/g' | xargs echo -n)
|
|
|
|
curl --request POST \
|
|
--url "https://$PLUGIN_MATRIX_SERVER/_matrix/client/r0/rooms/$PLUGIN_MATRIX_ROOM/send/m.room.message?access_token=$MATRIX_TOKEN" \
|
|
--header "Content-Type: application/json" \
|
|
-f \
|
|
--data "{
|
|
\"msgtype\": \"m.text\",
|
|
\"body\": \"$(echo "# $PLUGIN_VERSION_PREFIX$CURRENTTAG \n $ALLCHANGES" | xargs echo -n)\",
|
|
\"format\": \"org.matrix.custom.html\",
|
|
\"formatted_body\": \"$FORMATTED_CHANGES\"
|
|
}"
|
|
echo "Notification sent";
|
|
fi |