Last active
May 22, 2024 06:56
-
-
Save VladRassokhin/e24509b7a85386e6374b7580c840dc71 to your computer and use it in GitHub Desktop.
Simple bash functions library to say something to TeamCity. See https://confluence.jetbrains.com/display/TCDL/Build+Script+Interaction+with+TeamCity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
function __tc_encode { | |
# Only unicode characters are not supported | |
echo -n "$1" | sed "s/\([|']\)/\|\1/g; s/\[/\|\[/g; s/\]/\|\]/g; s/\r/\|r/g;" | sed ':a;N;$!ba;s/\n/|n/g' | |
} | |
function __tc_message { | |
echo "##teamcity[message text='$(__tc_encode "$2")' status='${1:-NORMAL}']" | |
} | |
function __tc_simple { | |
echo "##teamcity[$1 '$(__tc_encode "$2")']" | |
} | |
function tc_message { | |
__tc_message NORMAL "$1" | |
} | |
function tc_message_failure { | |
__tc_message FAILURE "$1" | |
} | |
function tc_message_error { | |
__tc_message ERROR "$1" | |
} | |
function tc_message_warning { | |
__tc_message WARNING "$1" | |
} | |
function tc_message_normal { | |
__tc_message NORMAL "$1" | |
} | |
function tc_block_open { | |
echo "##teamcity[blockOpened name='$(__tc_encode "$1")']" | |
} | |
function tc_block_close { | |
echo "##teamcity[blockClosed name='$(__tc_encode "$1")']" | |
} | |
function tc_progress { | |
__tc_simple 'progressMessage' "$1" | |
} | |
function tc_progress_start { | |
__tc_simple 'progressStart' "$1" | |
} | |
function tc_progress_finish { | |
__tc_simple 'progressFinish' "$1" | |
} | |
# $1 - text (required) | |
# $2 - identity (optional) | |
function tc_build_problem { | |
if [ "$2" = "" ]; then | |
echo "##teamcity[buildProblem description='$(__tc_encode "$1")']" | |
else | |
echo "##teamcity[buildProblem description='$(__tc_encode "$1")' identity='$(__tc_encode "$2")']" | |
fi | |
} | |
# $1 - text (required) | |
# $2 - status (optional) | |
function tc_build_status { | |
if [ "$2" = "" ]; then | |
echo "##teamcity[buildStatus text='$(__tc_encode "$1")']" | |
else | |
echo "##teamcity[buildStatus text='$(__tc_encode "$1")' status='$(__tc_encode "$2")']" | |
fi | |
} | |
function tc_build_number { | |
__tc_simple 'buildNumber' "$1" | |
} | |
function tc_set_parameter { | |
echo "##teamcity[setParameter name='$(__tc_encode "$1")' value='$(__tc_encode "$2")']" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
source service-messages.sh | |
tc_block_open "Test block" | |
tc_message "Test message" | |
tc_message "$(echo -e "Test\nmultiline\n\rmessage")" | |
tc_message "Test\nnon-multiline\n\rmessage" | |
tc_message "Test | |
multiline | |
message" | |
tc_block_close 'Test block' | |
tc_block_open 'Test "quoted"' | |
tc_message "Test escaping ' | [ ]" | |
tc_message "Test non-escaping \ / { }" | |
tc_block_close 'Test "quoted"' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
TODO: Support prefixless functions definition. Could be done via parsing '$1', e.g.
source service-messages.sh
,source service-messages.sh tc_
, etc.