android jenkins android-gradle

La compilación de Jenkins falló debido a falta de Android SDK



android-gradle (3)

Arreglado.

  1. Ir a Jenkins> Gestionar Jenkins> Configurar sistema
  2. Verifique "Variables de entorno"
  3. agregar nombre: ANDROID_HOME, value -> su directorio sdk android
  4. haga clic en "agregar"
  5. DESPLAZAR ABAJO HACER CLIC AHORRAR

Como dice el título, mi compilación de jenkins falla debido a que no encuentra el SDK de Android a pesar de que se encuentra en la ruta de los entornos.

Aquí están los registros de la consola

Started by user anonymous Building in workspace /Users/lmnapp/.jenkins/jobs/Android_app_master/workspace > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://bitbucket.org/xxxxx-xxx/xxxx-android-app.git # timeout=10 Fetching upstream changes from https://bitbucket.org/xxxx-mob/xxxx-android-app.git > git --version # timeout=10 using .gitcredentials to set credentials > git config --local credential.helper store --file=/var/folders/gj/xxxxxxxx/T/xxxxx.credentials # timeout=10 + export ANDROID_HOME=/Users/lmnapp/android-sdk-macosx + ANDROID_HOME=/Users/lmnapp/android-sdk-macosx + export ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms + ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms + export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx + PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx + export AVD_NAME=jenkinsGoogleApi18_1 + AVD_NAME=jenkinsGoogleApi18_1 + echo displayPath displayPath + echo .... .... + echo .... .... + echo /usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx /usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx + adb start-server [Gradle] - Launching build. [workspace] $ /Users/lmnapp/.jenkins/jobs/Android_app_master/workspace/gradlew assembleProductionRelease Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence. java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. at com.android.build.gradle.internal.SdkHandler.getAndCheckSdkFolder(SdkHandler.java:103) at com.android.build.gradle.internal.SdkHandler.getSdkLoader(SdkHandler.java:113) at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:87) at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.groovy:467) at com.android.build.gradle.BasePlugin.access$0(BasePlugin.groovy) at com.android.build.gradle.BasePlugin$_createTasks_closure9.doCall(BasePlugin.groovy:372) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:278) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016) at groovy.lang.Closure.call(Closure.java:423) at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40) at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy12.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79) at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:65) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:504) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:83) at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47) at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:55) FAILURE: Build failed with an exception. * Where: Build file ''/Users/lmnapp/.jenkins/jobs/Android_app_master/workspace/project/build.gradle'' line: 120 * What went wrong: A problem occurred evaluating project '':project''. > SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED

Como puede ver, la ruta claramente tiene a android_home establecido correctamente.

Estoy intentando construir esto vía gradle en jenkins.

Estos son los comandos de shell pre ejecutados que he configurado este trabajo para hacer

export ANDROID_HOME=/Users/lmnapp/android-sdk-macosx export ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME export AVD_NAME=jenkinsGoogleApi18_1 echo displayPath echo .... echo .... echo $PATH


El problema es que está exportando la variable de entorno ANDROID_HOME en un paso "Ejecutar shell". Una vez que el paso de shell ha finalizado, ese entorno ya no existe; las variables no se transferirán a los siguientes pasos de compilación.

Si estuvieras ejecutando todo, incluido Gradle, en un único paso de compilación, funcionaría, por ejemplo

export ANDROID_HOME=/foo/bar/sdk ./gradlew clean assembleProductionRelease

Pero dado que está utilizando el complemento de Gradle como un paso de compilación independiente, las variables de entorno ya no están disponibles.

Exportar la variable de entorno globalmente a través de la configuración de Jenkins como lo ha hecho en su propia respuesta es una forma de resolver esto, aunque también puede usar el complemento EnvInject para inyectar variables de entorno durante una compilación. Las variables configuradas con este complemento estarán disponibles para todos los pasos de compilación.

Para una máquina de compilación, la mejor práctica sería minimizar la cantidad de configuración manual requerida, como instalar las variables de entorno de SDK y de hardcoding de Android en la configuración del servidor.

Puedo recomendar agregar el complemento Android SDK Manager a su compilación de Gradle: instalará automáticamente el SDK de Android más cualquier dependencia de compilación para usted.


Imagino que ha registrado su archivo local.properties en el control de versiones que contenía la ruta al archivo SDK de su máquina local (que se realiza automáticamente al configurar un proyecto o al abrir un proyecto). Cambie su archivo local.properties a la ruta predeterminada del SDK (para que maneje automáticamente el cambio según la máquina local):

sdk.dir=/Applications/android_sdk

Verifica que cambies al control de versión, y luego pon local.properties en tu archivo .gitignore ( mira aquí para obtener ayuda ).