Você está operando com objetivos cruzados com você mesmo. Seu script depende de credenciais específicas do usuário, mas o Jenkins é projetado para isolar sua compilação de credenciais e configurações específicas do usuário. Existem quatro maneiras de resolver esse conflito (que podem ter implicações de segurança, prossiga com cuidado):
-
Conceda credenciais para a Jenkins fazer o trabalho. (dar-lhe chaves ssh) isso tem a vantagem de que as ações tomadas por jenkins são registradas como jenkins não como um desenvolvedor e que você pode limitar as permissões que os jenkins têm para agir (por exemplo, comandos forçados ssh são úteis aqui). A desvantagem é que, como o jenkins é um usuário compartilhado, é mais fácil que suas credenciais vazem.
-
alterne usuários pela duração do script. (isso é o que você está fazendo com a sua solução) além do runuser olhar para sudo e super. (Eu prefiro super para este caso de uso.) A vantagem é que a resolução de problemas é mais fácil, pois o script é executado como o mesmo usuário que o escreveu. As desvantagens são que ações executadas por Jenkins como o usuário serão culpadas pelo usuário e que isso pode tornar mais fácil comprometer a conta do usuário. (isto pode ser mitigado por permissões apertadas em sudo ou super para o usuário jenkins e não confiando em nada passado de jenkins para o usuário. perl documenta o problema bem na documentação sobre a mancha)
-
crie um servidor para executar o script. CGI, rpc etc.
-
repensem a coisa toda. Pode haver uma maneira de fazer o que é necessário sem credenciais.