web-dev-qa-db-fra.com

Android CI utilisant Bitbucket Pipelines et Docker

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
24
Ryan R

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.

11
Geng Jiawen

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 :)

0
Preflightsiren

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
0
Oleksandr Shpota