#!/bin/bash # structure_message $content $formatted_content (optional) structure_message() { if [ -z "$2" ]; then body=$(jq -Rs --arg body "$1" '{"msgtype": "m.text", $body}' < /dev/null) else body=$(jq -Rs --arg body "$1" --arg formatted_body "$2" '{"msgtype": "m.text", $body, "format": "org.matrix.custom.html", $formatted_body}' < /dev/null) fi echo $body } # send_message $body (json formatted) $room_id $access_token send_message() { curl -XPOST -d "$1" "https://matrix.parity.io/_matrix/client/r0/rooms/$2/send/m.room.message?access_token=$3" } # Receive keys trusted_keys=( 27E36F4D3DB8D09946B14802EC077FBE1556877C # gavin@parity.io ) for key in ${trusted_keys[@]}; do gpg --keyserver hkps://keys.openpgp.org --recv-keys $key done # If the tag's not signed by any of the above keys, exit failing if ! git tag -v $CI_COMMIT_TAG; then echo "[!] FATAL: TAG NOT VERIFIED WITH A GPG SIGNATURE, QUITTING" exit 1 fi echo "[+] Tag present and verified. Alerting #polkadot and release-manager" # Format and send message to #polkadot channel msg_body=$(cat <New version of polkadot tagged: $CI_COMMIT_TAG.
Build pipeline: $CI_PIPELINE_URL
A release will be pending upon completion of this pipeline. EOF ) echo "[+] Sending message to Polkadot room" send_message "$(structure_message "$msg_body" "$formatted_msg_body")" $MATRIX_ROOM_ID $MATRIX_ACCESS_TOKEN # Format and send message to release manager msg_body=$(cat <