22

Próbuję skonfigurować ciągłą integrację (CI) w wersji Bitbucket Pipelines dla systemu Android.System Android CI korzystający z rurek i dokowania Bitbucket

Utworzono przykładową pustą aktywność przy użyciu Androida Studio 2.1.1.

Z rurociągami korzystam z kontenera dokowanego uber/android-build-environment, który ładnie tworzy otoczenie. Oto potrzebne są moje 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 

Niektóre zmiany od uber/android-build-environment spodziewa się być prowadzone w taki sposób:

docker run -i -v $PWD:/project -t uber/android-build-environment /bin/bash /project/ci/build.sh 

Na przykład, źródło nie jest kopiowany do objętości /project ale zamiast Rurociągi kopiuje zawartość z repo Bitbucket do katalogu roboczego pojemnika na:

/opt/atlassian/bitbucketci/agent/build 

i kiedy jest ./gradlew assembleDebug uruchomić pojawia się następujący błąd:

... 

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 

Running ls -al w katalogu roboczym daje:

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 
+0

Nie znalazłem innej alternatywy niż użycie obrazu dokowanego "uber/android-build-environment: latest" do zbudowania i opartego na Androidzie Gradle'a przy użyciu Bitbucket Pipelines. Czy są na to inne sposoby? Czy rozwiązałeś swój problem? – metch

+0

Niestety jeszcze nie. Wydaje się, że problem dotyczy Pipelines, a nie kontenera build. –

+0

@RyanR I nowość w integracji CI z problemami z konfiguracją programistyczną Androida, więc jeśli to możliwe, możesz pomóc mi w ustawieniu CI za pomocą potoków Bitbucket –

Odpowiedz

10

To błąd w systemie, to zgłosić (issue url, jest dość długi) do nich, a oni mają stałe go (fix url) .I mieć przetestowany na moim projekcie i pomyślnie go zbudować. Spróbuj teraz zbudować swój projekt i powodzenia.

+0

Dzięki, tak, projekt jest teraz pomyślnie budowany. –

+0

dlaczego otrzymuję _ + ./gradlew assembleDebug bash: ./gradlew: Brak takiego pliku lub katalogu –

+0

@RyanR można udostępnić działający plik bitbucket-pipelines.yml? i gdzie muszę ustawić _docker run -i -v $ PWD:/project ......._? tylko w pliku yml muszę to podać! Wszelkie informacje będą wdzięczne. –

0

mógłbyś podlinkowujemy swój projekt z /opt/atlassian/bitbucketci/agent/build do /project od wewnątrz kontenera? ln -s /opt/atlassian/bitbucketci/agent/build /project to polecenie, którego będziesz potrzebować.

lub alternatywnie skopiować pliki do nowej ścieżki?

mam żadnego doświadczenia z Androidem rozwoju, tak YMMV :)