Errors should be handled a bit more nicely now.
The SFTP part could also be done from deploy scripts like:
scp -i {runner.ssh.identity} \
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
{runner.ssh.user}@{runner.ssh.address%:*} -p {runner.ssh.address#*:}
but that is deemed way too annoying, so we do it from Go.