22

我正在嘗試在Android的Bitbucket Pipelines中設置持續集成(CI)。使用Bitbucket流水線和Docker的Android CI

我已經使用Android Studio 2.1.1創建了一個示例空白活動。

使用管道我使用uber/android-build-environment Docker容器,它很好地創建了環境。這是需要我的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 

一些變化,因爲uber/android-build-environment期待被這樣運行:

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

例如,源不被複制到卷/project而是管道副本內容

/opt/atlassian/bitbucketci/agent/build 

./gradlew assembleDebug是:到位桶回購在容器的工作目錄來看,我得到以下錯誤:

... 

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 

在工作目錄中運行ls -al給出:

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

我沒有發現使用'超級/ android-build-environment:latest' Docker鏡像來構建基於Android Gradle的projet並使用Bitbucket Pipelines的其他選擇。還有其他方法可以做到嗎?你解決了你的問題嗎? – metch

+0

不幸的是還沒有。這似乎是管道而不是構建容器的問題。 –

+0

@RyanR我新來CI集成有問題的Android開發設置,所以如果可能的話,你可以幫助我設置與Bitbucket流水線CI –

回答

10

這是一個錯誤在他們的系統,我舉報(issue url,這是相當長的)他們,他們有固定的(fix url)。我有在我的項目上進行測試,併成功構建。試着立即構建您的項目,祝您好運。

+0

謝謝,是的,項目現在可以成功構建。 –

+0

爲什麼我越來越_ + ./gradlew assembleDebug bash:./gradlew:沒有這樣的文件或目錄_ –

+0

@RyanR你可以分享工作bitbucket-pipelines.yml文件嗎?和我必須把_docker運行-i -v $ PWD:/ project ......._?在yml文件中只有我必須把這個!任何信息將不勝感激。 –

0

你能不能從容器內的符號鏈接從/opt/atlassian/bitbucketci/agent/build/project你的項目? ln -s /opt/atlassian/bitbucketci/agent/build /project是您需要的命令。

或者將文件複製到新路徑?

我有android開發沒有經驗,所以因人而異:)