我正在使用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