Como posso executar um script Shell em Jenkinsfile?
estou a manter um ficheiro de script shell chamado urltest.sh
em /var/lib/jenkins
e a executar o ficheiro de jenkins
build.
The Environment Variables are -
HOME - /var/lib/jenkins ;
JENKINS_HOME - /var/lib/jenkins
a saída da consola é como:
Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/AutoScript
[AutoScript] $ /bin/sh -xe /tmp/hudson2777728063740604479.sh
+ sh urltest.sh
sh: 0: Can't open urltest.sh
Build step 'Execute shell' marked build as failure
Finished: FAILURE
estou confuso onde devo guardar o ficheiro de script da shell para que seja executado.
4 answers
Se vires a tua mensagem de erro, ela diz
Edifício no espaço de trabalho / var / lib / jenkins/workspace / AutoScript
E de acordo com os seus comentários, colocou urltest.sh em
Por isso o Jenkins não consegue encontrar o ficheiro. Em seu passo de construção fazer esta coisa, ele vai funcionar/var / lib / jenkins
cd # which will point to /var/lib/jenkins
./urltest.sh # it will run your script
Se ele ainda falhar tente cortar o arquivo como usuário jenkin pode não ter permissão de arquivo, mas eu acho que se você fizer acima passo você será capaz de executar.
Baseado no número de visualizações que esta pergunta tem, parece que muitas pessoas estão visitando isso para ver como configurar um trabalho que executa um script shell.
Estes são os passos para executar um script shell no Jenkins:
- na página principal do Jenkins seleccione O Novo Item .
- Indique um nome de item como "a minha tarefa de script da shell"e escolha O projecto estilo livre . Pressione OK .
- na página de configuração, no Build clique em bloco na lista adicionar um passo de compilação e seleccionar executar a linha de comandos .
-
Na área de texto pode colar um programa ou indicar como executar um programa existente. Então você pode dizer:
#!/bin/bash echo "hello, today is $(date)" > /tmp/jenkins_test
Ou apenas
/path/to/your/script.sh
Clique Em Salve .
Você pode obter mais detalhes no documento crie uma tarefa de script de Shell Jenkins no GitHub.
Existe o 'Plugin' de Script gerido que oferece uma forma fácil de gerir scripts de utilizadores. Ele também adiciona uma ação de build step que lhe permite selecionar qual o script de usuário a executar.
As respostas anteriores estão correctas, mas aqui está mais uma forma de fazer isto e algumas dicas:
Opção #1 Ir até você Jenkins job e procurar por "adicionar um passo de compilação" e, em seguida, copiar e colar o seu script lá
Opção #2 Vá para Jenkins e faça o mesmo de novo "adicionar um passo de compilação", mas desta vez coloque o caminho totalmente qualificado para o seu script no exemplo : ./usr/somewhere/helloWorld.sh
Coisas a ter em conta / tips:
- variáveis de ambiente, se o seu trabalho está a correr ao mesmo tempo, então precisa de se preocupar com problemas de concorrência. Um trabalho pode estar definindo o valor das variáveis de ambiente e o próximo pode usar o valor ou tomar alguma ação baseada nisso incorretamente.
- certifique-se de que todos os caminhos estão totalmente qualificados
- pense em Registar /var/log ou em algum lugar para que também tenha algo para ir no servidor (opcional) O problema do espaço e ... as permissões, os problemas de ficar sem espaço e as permissões são muito comuns no ambiente linux
- alerta e certifique-se de que o seu script/trabalho falha nos trabalhos de jenkin quando o seu script falha