Jenkins自定义工具进入Jenkinsfile声明式管道

时间:2019-08-14 20:40:40

标签: android jenkins

我正在尝试将自定义工具导入到管道Jenkinsfile脚本(特别是Android SDK)中。从构建控制台,它说我需要设置ANDROID_HOME环境变量来构建我的Android应用程序。但是,当我尝试添加SDK下载并将其设置为ANDROID_HOME变量时,它告诉我该目录不存在:

  

由以下原因引起:java.lang.RuntimeException:SDK目录“ /var/jenkins_home/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Android_SDK_CLI_tools_4333796/bin”不存在。

在全局工具配置页面中,这是我添加Android SDK的方式:

  

名称:Android_SDK_CLI_tools_4333796

     

工具首页:bin

     

命令:(在下面)

if [ ! -f "Android_SDK_tools_4333796/" ]; then
    echo "curl"
    curl -O https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
    echo "unzip"
    yes | unzip -q sdk-tools-linux-4333796.zip
    rm sdk-tools-linux-4333796.zip 
    echo "licenses"
    yes | tools/bin/sdkmanager --licenses
fi

下面是我设置我的Jenkinsfile的方法:

pipeline {
    agent any
    environment {
        ANDROID_HOME = tool 'Android_SDK_CLI_tools_4333796'
        //ANDROID_HOME = tool name: 'Android_SDK_CLI_tools_4333796', type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool' //alternative but still has the same results. 
        //env.PATH = "${env.PATH}:${androidSDKHome}"
    }
    tools {
        jdk 'JDK_9.0.4'
    }

    stages {
        stage('Pre-build') {
            steps {
                // seeing if Java JDK installed correctly
                sh 'java --version'

                print (env.ANDROID_HOME) // prints: /var/jenkins_home/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Android_SDK_CLI_tools_4333796/bin


            }
        }
        stage('Test') {
            steps {
                echo 'Testing stage...'
                sh './gradlew clean --stacktrace' //ERROR (above)
            }
        }
    }
}

我的问题是,我是否可以将这个自定义工具正确地引入构建中?即使我尝试访问绝对路径,Jenkins似乎也找不到自定义工具。

我尝试引用此SO question;但是,这是我要获取的可执行文件,而我正在为Gradle设置环境变量,以自动选择ANDROID_HOME环境变量。

1 个答案:

答案 0 :(得分:0)

好吧,在过去几天苦苦挣扎之后,我意识到了许多新事物,最重要的是必须使用dir结构才能使命令起作用。

文件夹结构应采用以下布局:

Mercado.findById({ _id: '5d52e69b4b333234f0bbf1ba' }).where({ 'itens.item.espaco': { $eq: 'peitoral' } }

从那里,一切都应该像多米诺骨牌一样倒下。我的问题是,当詹金斯(Jenkins)解压缩Android SDK cli工具下载包时,我正在将其设置为bin。这是错误的,因为当您解压缩Android SDK时,/ bin位于/ tools目录中。詹金斯(Jenkins)有点让我困惑,不允许我将home目录留空(这很有意义,因为如果需要,您还可以设置绝对路径),所以我将其设置为当前的工作目录(在这种情况下为。

我缺少的另一件事是安装最新的Android SDK版本。我刚刚将其添加到了Android SDK的全局工具配置脚本中:

/<unpacked_location>
  /tools
    /bin
    ...
  /build-tools
  /licenses
  /platforms