我正在尝试将一个定制工具导入到管道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 工具之家:垃圾箱 命令:(下)
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;但是,这是为了获得可执行文件,而我希望将env设置为Gradle,以便自动获取ANDROID_HOME env。
发布于 2019-08-19 20:02:19
好吧,经过几天的努力,我意识到了许多新的东西,最重要的是dir结构是如何工作的命令。
文件夹结构应该在此布局中:
/<unpacked_location>
/tools
/bin
...
/build-tools
/licenses
/platforms从那以后,一切都应该像多米诺骨牌一样倒下。我的问题是,当Jenkins解压Android工具下载时,我把家设置为bin。这是错误的,因为当您打开Android时,/bin位于/tools dir中。Jenkins让我有点困惑,不允许我把家里的dir空白处(因为您也可以设置绝对路径,如果需要),所以我把它设置为当前的工作dir (。在这种情况下)。
我遗漏的另一件主要事情是安装最新的Android版本。我刚刚将它添加到Android的全局工具配置脚本中:
yes | tools/bin/sdkmanager "build-tools;28.0.3"https://stackoverflow.com/questions/57501768
复制相似问题