我正在尝试将自定义工具导入到管道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环境变量。
答案 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