web-dev-qa-db-ja.com

Android Bitbucket PipelinesとDockerを使用したCI

Androidの Bitbucket Pipelines で継続的インテグレーション(CI)を設定しようとしています。

Android Studio 2.1.1を使用して、サンプルの空白のアクティビティを作成しました。

パイプラインでは、環境を適切に作成する ber/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

ber/Android-build-environment が次のように実行されることを期待しているため、いくつかの変更が必要です。

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

たとえば、ソースはボリューム/projectにコピーされませんが、代わりにパイプラインがBitbucketリポジトリの内容をコンテナの作業ディレクトリにコピーします。

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

それは彼らのシステムのバグです、私は彼らにそれを報告します( issue url 、それはかなり長いです)そして彼らはそれを修正しました( fix url )。私は私のプロジェクトでテストしましたビルドに成功しました。今すぐプロジェクトをビルドして、頑張ってください。

11
Geng Jiawen

コンテナ内からプロジェクトを/opt/atlassian/bitbucketci/agent/buildから/projectにシンボリックリンクできますか? ln -s /opt/atlassian/bitbucketci/agent/build /projectは、必要なコマンドです。

または、ファイルを新しいパスにコピーしますか?

Android開発の経験がないので、YMMV :)

0
Preflightsiren

uber/Android-build-environmentはサポートされなくなったようです。

代わりにjaviersantos/Android-ciを使用しましたが、これは最初から完全に機能します。

次のコンテンツを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
Sasha Shpota