web-dev-qa-db-fra.com

Jenkins donnant Le répertoire SDK n'existe pas

J'essaye d'installer une intégration continue avec Jenkins sur un projet Androidgradle

Lorsque je le construit, j'obtiens l'erreur suivante:

[Android Gradle Jenkins Experiment2] $ "/Users/Shared/Jenkins/Home/workspace/Android Gradle Jenkins Experiment2/gradlew" build
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
The SDK directory '/Users/chaz/Library/Android/sdk' does not exist.

Ce qui suit fait partie de la configuration de ma jenkins:

Android_HOME
/Users/chaz/Library/Android/sdk

Java_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/

Ma machine est OS X El Capitan Version 10.11.6

J'ai essayé ce qui suit:

  1. Pensant que c'était un problème de permission, donnait chmod -R 777 pour le répertoire sdk
  2. Vérifiez deux fois le sdk.dir dans le fichier local.properties (il pointe vers /Users/chaz/Library/Android/sdk).
  3. Suppression de la nouvelle variable Android_HOME env dans la configuration de jenkins (n'a pas aidé).

Quand j'ai googlé, j'ai trouvé quelqu'un confronté au même problème problème . Et la solution fournie était la suivante:

Solution

Cela se produit probablement parce que vous écrasez Android_HOME - Supprimez les personnalisations d'environnement de ce type, puis le SDK devrait S'installer correctement. 

Reconnaissance

Merci et oui, il y avait un chevauchement des variables env. J'ai tout supprimé sauf le global et je l'ai gardé dans $ {Android_HOME}.

Comment dois-je faire letous sauf le global et les conserver dans $ {Android_HOME}.} _ une partie de la solution?

Edit: J'ai réussi à utiliser Jenkins sur une machine Windows avec la même configuration de jenkins (j'ai pu construire avec succès, installer apk dans un périphérique également). 

Merci d'avance!

15
ranjjose

Cela sent comme un problème de permission. Vous avez peut-être donné l'autorisation à sdk-dir mais pas au répertoire parent.

15
ligi

Dans ma situation, c'est arrivé parce que le fichier

local.properties

avait été ajouté à .gitignore

(Je monte à distance)

3
Andrey

Je veux juste dire comment nous avons résolu ce problème dans notre projet. Cela peut aider quelqu'un.

Le répertoire de travail de notre Jenkins est sous "/ User/shared", et notre SDK est sous "/ User/foo"

Nous avons essayé d'accorder à l'utilisateur foo et à tout le monde l'autorisation d'accéder au dossier SDK et à ses dossiers parent, mais cela n'a pas fonctionné.

Ensuite, nous avons installé le SDK sous/user/Partagé/Jenkins/Bibliothèque/Android/SDK via le Gestionnaire de SDK Android et avons accordé à l'utilisateur foo et à tous l'accès au nouveau dossier SDK et à ses dossiers parents. De plus, nous avons changé le chemin du SDK en une nouvelle configuration de projet Jenkins. Alors ça marche.

2
Q. Fan

Comme l'a dit @ Ligi, c'est dû à un problème de permission. Donc, il peut être corrigé de 2 manières

  1. Exécuter les commandes ci-dessous dans ~/Library/path à l'aide du terminal 

    chmod 777
    

    à /Users/username/Library/. Vérifier l'autorisation en exécutant la commande ls -s

    Donc, /Users/username/Library/ devrait maintenant afficher la permission comme ceci:

    drwxr-xr-x@
    
  2. Deuxièmement, exécutez la commande ci-dessous sur le terminal pour afficher la bibliothèque dans l'explorateur de fichiers.

    chflags nohidden ~/Library/
    

    Alors maintenant, naviguez et cliquez avec le bouton droit de la souris sur le dossier Bibliothèque -> Obtenir des informations -> Défiler Vers le bas -> Modifier l’autorisation sur l’autorisation dans la boîte de dialogue.

    Définition de l'autorisation pour le répertoire Library

Maintenant, lancez jerkin, il devrait pouvoir accéder au répertoire sdk dans Library 

1
iSathya