wget:在詹金斯管道中找不到命令

时间:2020-02-05 05:47:03

标签: jenkins jenkins-pipeline jenkins-groovy

在我的Mac中,wget命令起作用。如何解决这个问题?

错误消息

wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip /Users/don/.jenkins/workspace/demo@tmp/durable-2702e009/script.sh: 第1行:wget:找不到命令

完整管道脚本

node('master') {
    def home = sh(script: "echo $ANDROID_HOME",returnStdout: true).trim()  

        def SDKPath = "$home/Android/sdk"
        stage("Preparing SDK"){
            // Check SDK Downloaded
            def isSDKDownloaded = sh(script: "test -e sdk-tools-linux-4333796.zip && echo true || echo false",returnStdout: true).trim()
            if(isSDKDownloaded == "false"){
                // Download SDK
                sh "wget 'https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip'"
            }
            // Check if SDK is Extracted
            def isExtracted = sh(script: "test -e $SDKPath/tools && echo true || echo false",returnStdout: true).trim()
            if(isExtracted == "false"){
                sh "mkdir -p $SDKPath"
                //Unzip SDK
                sh "unzip sdk-tools-linux-4333796.zip -d $SDKPath"
            }
// Install SDK Tools
            sh "yes | $SDKPath/tools/bin/sdkmanager 'build-tools;28.0.3' 'platform-tools' 'platforms;android-27'"
sh "ls $SDKPath/licenses"
            // See installed And Available SDK
            sh "$SDKPath/tools/bin/sdkmanager --list"
            // Accept All SDK Licences
            sh "yes | $SDKPath/tools/bin/sdkmanager --licenses"
        }

def selectedBranch = SELECTED_RELEASE_BRANCH
         stage('Checkout') {
             git branch: selectedBranch, url: 'git@gitlab.com:o-apps/demo.git'
            // Remove Existing local properties
            sh 'rm local.properties ||:'
            // Write sdk.dir Path into local properties file
            sh "echo 'sdk.dir=$SDKPath' >> local.properties"
         }

         stage('Setup Tools') {
             withCredentials([file(credentialsId: 'android_keystore', variable: 'KEYFILE')]) {
                 sh "cp \$KEYFILE app/key.jks"
             }   
         }

         stage('Build Release APK') {
             sh "./gradlew clean assembleRelease"
         }

         stage('Upload to Play Store') {
            androidApkUpload googleCredentialsId: 'key', apkFilesPattern: '**/*-release.apk', trackName: 'alpha'
         }

         stage('Cleanup Credential') {
             sh "rm app/key.jks"
         }
}

1 个答案:

答案 0 :(得分:3)

这可能是由于$PATH环境变量所致,您的用户和运行Jenkins的用户之间的环境变量不同。您的用户可能会通过在外壳资源文件(〜/ .bashrc,〜/ .zshrc)中展开$PATH来对其进行更改。

不用担心,您可以使用完整路径。

要找出到wget的完整路径,请在运行管道的机器(标为master的机器)上运行它:

%  which wget
/usr/local/bin/wget

(您的路径自然会有所不同。)

现在使用完整路径:

                // Download SDK
                sh "/usr/local/bin/wget 'https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip'"