Getting TeamCity to recognize Powershell messages
Asked Answered
B

1

10

How do I get TeamCity to output messages in the build log with Powershell?

I am using TeamCity 7.1.

Here is my Powershell Build Step:enter image description here

The script is:

write-host "##teamcity[message 'Getting production info']"

if ($LASTEXITCODE -ne 0) {
    write-host "##teamcity[message 'Production Remote Not Found: Creating Remote']"

    write-host "##teamcity[message 'Pushing to Remote']"
    #git push production

} else {
    write-host "##teamcity[message 'write-output: Production Remote Found: Pushing to Remote']"
    #git push production
}

And the only thing I am getting in the build log is:

[17:02:58]Skip checking for changes - changes are already collected
[17:02:59]Publishing internal artifacts (1s)
[17:03:00][Publishing internal artifacts] Sending build.start.properties.gz file
[17:02:59]Clearing temporary directory: C:\BuildAgent2\temp\buildTmp
[17:02:59]Checkout directory: C:\BuildAgent2\work\7669b6a04f96908d
[17:02:59]Updating sources: agent side checkout
[17:02:59][Updating sources] VCS Root: Portal Master
[17:02:59][VCS Root: Portal Master] revision: c5c6a9a0d491ee2c64ce98e48b0d67c422237698
[17:02:59][VCS Root: Portal Master] Resetting Portal Master in C:\BuildAgent2\work\7669b6a04f96908d to revision c5c6a9a0d491ee2c64ce98e48b0d67c422237698
[17:02:59]Starting: C:\Windows\sysnative\cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -File C:\BuildAgent2\temp\buildTmp\powershell1349912883332714566.ps1
[17:02:59]in directory: C:\BuildAgent2\work\7669b6a04f96908d
[17:03:00]
[17:03:00]
[17:03:00]
[17:03:00]Process exited with code 0
[17:03:00]Publishing internal artifacts
[17:03:00][Publishing internal artifacts] Sending build.finish.properties.gz file
[17:03:00]Build finished
Boiler answered 20/9, 2012 at 22:10 Comment(0)
J
16

As described in documentation "message" service message can have multiple arguments, so you need to specify at least argument 'text': "##teamcity[message text='Getting production info']"

Your script will be

write-host "##teamcity[message text='Getting production info']"

if ($LASTEXITCODE -ne 0) {
    write-host "##teamcity[message text='Production Remote Not Found: Creating Remote']"

    write-host "##teamcity[message text='Pushing to Remote']"
    #git push production

} else {
    write-host "##teamcity[message text='write-output: Production Remote Found: Pushing to Remote']"
    #git push production
}
J answered 23/10, 2012 at 9:15 Comment(1)
+1 @JoeYoung I just got stung with this one, however, according to the docs you shouldn't have to explicitly define text attribute; this is treated as a single attribute message and should work. However, it doesn't and using text does the trick.Adalai

© 2022 - 2024 — McMap. All rights reserved.