J'essaie d'exécuter fastlane
à l'aide de Jenkinsfile
sur Mac mini.
Si je cours /usr/local/bin/fastlane -v
le résultat est correct. Mais si j'essaie simplement avec fastlane -v
alors j'obtiens
fastlane: command not found
fastlane -v
fonctionne sur l'esclave Jenkins si j'ai juste à me connecter et à exécuter.
Pour déboguer cela, j'ai essayé d'exécuter echo $PATH
par le biais de Jenkinsfile, a obtenu
/usr/bin:/bin:/usr/sbin:/sbin
Si je me connecte à l'esclave jenkins en tant que jenkins
utilisateur & exécution echo $PATH
j'obtiens
/Users/jenkins/.fastlane/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
Pourquoi cette différence ?
C'est plist
pour l'agent Jenkins.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jenkins.ci</string>
<key>UserName</key>
<string>jenkins</string>
<key>SessionCreate</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-Djava.awt.headless=true</string>
<string>-jar</string>
<string>/Users/jenkins/agent.jar</string>
<string>-jnlpUrl</string>
<string>http://jenkins.example.com:8080/computer/jenkins2-slave3/slave-agent.jnlp</string>
<string>-secret</string>
<string>****************************</string>
<string>-workDir</string>
<string>/Users/jenkins/jenkins_slave/</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/jenkins/error.log</string>
<key>StandardOutPath</key>
<string>/Users/jenkins/stdout.log</string>
</dict>
</plist>