为什么gradlew构建为什么不在docker(bitbucket)管道中使用本地缓存?

时间:2019-05-22 03:53:16

标签: docker gradle bitbucket-pipelines

我正在使用bitbucket docker管道来验证我的构建,以便进行推送。我的依赖关系之一是一个私有软件包,该软件包托管在另一个bitbucket存储库中。对于在用户机器上的构建,我使用Gradle的私有maven存储库插件,该插件可以使用加密的用户名和密码来解决我的依赖性。

这对于开发人员机器来说效果很好,但是我想避免在管道中对用户名和密码进行硬编码。相反,由于bitbucket支持整个存储库中的sshkeys进行身份验证,因此我构建了管道脚本,以使用私有包克隆存储库,并将其复制到gradle缓存中。我都尝试过:

/home/gradle/.gradle/caches/modules-2/files-2.1/com.mycompany

〜/ .gradle / caches / modules-2 / files-2.1 / com.mycompany

作为缓存。克隆和复制工作正常,因为我可以通过在管道中添加ls来查看缓存中相应目录中的文件,但是gradlew仍尝试通过Internet(另一个bitbucket存储库)来解决依赖关系,例如如果没有缓存。此外,我正在使用gradle docker image gradle:3.4.1(我的项目级别build.gradle文件中gradle的版本),但是gradle构建失败,并且google()不是函数。

由于缺少用户名,Gradlew构建尝试解析我的package.pom文件失败(因为管道中没有gradle.properties)。但是为什么它不使用缓存而不是尝试去存储库呢?

我尝试了标准的java:8 docker映像,gradle docker镜像直至5.1.1,并且尝试将包文件复制到docker映像中的各个gradle缓存中。我也尝试过使用chmod 775更改权限无济于事。我也尝试过gradlew assembleDebug与gradlew build的结果相同。我对gradle,docker和bitbucket有点陌生,所以我不确定是什么引起了问题。

  image: gradle:3.4.1

  pipelines:
  default:
    - step:
        caches:
          - gradle
          - android-sdk

        script:        
          # Download and unzip android sdk
          - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
          - unzip -o -qq android-sdk.zip -d android-sdk

          # Define Android Home and add PATHs
          - export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
          - export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"

          # Download packages.
          - yes | sdkmanager "platform-tools"
          - yes | sdkmanager "platforms;android-27"
          - yes | sdkmanager "build-tools;27.0.3"
          - yes | sdkmanager "extras;android;m2repository"
          - yes | sdkmanager "extras;google;m2repository"
          - yes | sdkmanager "extras;google;instantapps"
          - yes | sdkmanager --licenses

          # Build apk
          - git clone git@bitbucket.org:myorg/myrepo.git
          - scp -r myrepo/com/mycomp/* /home/gradle/.gradle/caches/modules-2/files-2.1/com.mycomp
          #- gradle build
          - ./gradlew build 
          #- ./gradlew assembleDebug

definitions:
    caches:
      android-sdk: android-sdk

Gradlew构建错误:

> Could not resolve all files for configuration ':app:debugCompileClasspath'.
   > Could not resolve com.mycomp:mypackage:1.0.1.
     Required by:
         project :app
      > Could not resolve com.mycomp:mypackage:1.0.1.
         > Could not get resource 'https://bitbucket.org/myorg/myrepo/raw/releases/com/mycomp/mypackage/1.0.11/package-1.0.1.pom'.
            > Username may not be null

0 个答案:

没有答案