J'essaie de configurer l'intégration continue dans Bitbucket Pipelines pour Android.
J'ai créé un exemple d'activité vide avec Android Studio 2.1.1.
Avec Pipelines, j'utilise le conteneur uber/Android-build-environment Docker, qui crée bien l'environnement. Voici mon bitbucket-pipelines.yml
image: uber/Android-build-environment:latest
pipelines:
default:
- step:
script:
- echo y | Android update sdk --filter "extra-Android-m2repository" --no-ui -a # Grab the Android Support Repo which isn't included in the container
- ./gradlew assembleDebug
Certains changements sont nécessaires car uber/Android-build-environment s’attend à être exécuté comme suit:
docker run -i -v $PWD:/project -t uber/Android-build-environment /bin/bash /project/ci/build.sh
Par exemple, la source n'est pas copiée sur le volume /project
mais Pipelines copie le contenu du référentiel Bitbucket dans le répertoire de travail du conteneur à l'adresse suivante:
/opt/atlassian/bitbucketci/agent/build
Et quand ./gradlew assembleDebug
est lancé, j'obtiens l'erreur suivante:
...
FAILURE: Build failed with an exception.
* What went wrong:
Could not create service of type TaskArtifactStateCacheAccess using TaskExecutionServices.createCacheAccess().
> Failed to create parent directory '/opt/atlassian/bitbucketci/agent/build/.gradle' when creating directory '/opt/atlassian/bitbucketci/agent/build/.gradle/2.10/taskArtifacts'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 56.449 secs
Lancer ls -al
dans le répertoire de travail donne:
ls -al
total 52
drwxr-xr-x 5 root root 4096 May 31 22:33 .
drwxr-xr-x 3 root root 4096 May 31 22:43 ..
drwxr-xr-x 3 root root 4096 May 31 22:33 app
-rw-r--r-- 1 root root 462 May 31 22:33 bitbucket-pipelines.yml
-rw-r--r-- 1 root root 498 May 31 22:33 build.gradle
drwxr-xr-x 8 root root 4096 May 31 22:33 .git
-rw-r--r-- 1 root root 387 May 31 22:33 .gitignore
drwxr-xr-x 3 root root 4096 May 31 22:33 gradle
-rw-r--r-- 1 root root 855 May 31 22:33 gradle.properties
-rwxr-xr-x 1 root root 4971 May 31 22:33 gradlew
-rw-r--r-- 1 root root 2314 May 31 22:33 gradlew.bat
-rw-r--r-- 1 root root 15 May 31 22:33 settings.gradle
C'est un bogue dans leur système, je le leur signale ( question url , il est assez long) et ils l'ont corrigé ( correction url ). pour construire votre projet maintenant et bonne chance.
Pourriez-vous symlinker votre projet de /opt/atlassian/bitbucketci/agent/build
à /project
depuis le conteneur? ln -s /opt/atlassian/bitbucketci/agent/build /project
est la commande dont vous aurez besoin.
ou bien copier les fichiers dans le nouveau chemin?
Je n'ai aucune expérience du développement Android, alors YMMV :)
Il semble que uber/Android-build-environment
n'est plus supporté.
J'ai fini par utiliser javiersantos/Android-ci
qui fonctionne parfaitement à partir de zéro.
Ajoutez simplement le contenu suivant à bitbucket-pipeline.yml:
image: javiersantos/Android-ci:27.0.3
pipelines:
default:
- step:
script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- chmod +x ./gradlew
- ./gradlew assembleDebug