首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins自定义工具进入Jenkinsfile声明管道

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

Stack Overflow用户
提问于 2019-08-14 20:40:40
回答 1查看 3.2K关注 0票数 0

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

原因是:'/var/jenkins_home/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/Android_SDK_CLI_tools_4333796/bin‘目录java.lang.RuntimeException不存在。

在全局工具配置页面中,我是如何添加Android的:

名称: Android_SDK_CLI_tools_4333796 工具之家:垃圾箱 命令:(下)

代码语言:javascript
复制
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:

代码语言:javascript
复制
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;但是,这是为了获得可执行文件,而我希望将env设置为Gradle,以便自动获取ANDROID_HOME env。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 20:02:19

好吧,经过几天的努力,我意识到了许多新的东西,最重要的是dir结构是如何工作的命令。

文件夹结构应该在此布局中:

代码语言:javascript
复制
/<unpacked_location>
  /tools
    /bin
    ...
  /build-tools
  /licenses
  /platforms

从那以后,一切都应该像多米诺骨牌一样倒下。我的问题是,当Jenkins解压Android工具下载时,我把家设置为bin。这是错误的,因为当您打开Android时,/bin位于/tools dir中。Jenkins让我有点困惑,不允许我把家里的dir空白处(因为您也可以设置绝对路径,如果需要),所以我把它设置为当前的工作dir (。在这种情况下)。

我遗漏的另一件主要事情是安装最新的Android版本。我刚刚将它添加到Android的全局工具配置脚本中:

代码语言:javascript
复制
yes | tools/bin/sdkmanager "build-tools;28.0.3"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57501768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档