如果我正确地理解了您的问题:您技术上甚至不需要在本地机器上安装
Docker,以便在Bitbucket管道中使用它(尽管它对调试非常有用)。
Bitbucket管道可以配置为使用从Docker Hub的Docker,您提到的(uber/android-build-environment)对我来说很好。
只需将bitbucket-pipelines.yml添加到项目的根目录中,例如:
image: uber/android-build-environment:latest
pipelines:
default:
- step:
script:
- build.sh
我喜欢在自己的灰脚本文件(build.sh)中组织我的构建过程,但这是可选的(您可以在脚本指令下的yaml文件中放置多个项目符号命令)。 bitbucket-pipelines.yml文件的(和更多细节)的例子可以在Language guides for Bitbucket Pipelines页面找到。
我的build.sh脚本(也在项目的根目录中,但是可以放在子目录中,只要你在bitbucket-pipelines.yml中引用它,例如scripts / build.sh):
#!/bin/sh
mkdir "${ANDROID_HOME}/licenses" || true
echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license"
./gradlew assembleDebug
许可证部分允许Android Gradle进程自动为您下载Android依赖项,如answer所述。
git update-index --chmod=+x build.sh
确保您已启用Bitbucket管道(从您的回购页面:设置 – >管道:设置 – >启用管道)。
然后提交bitbucket-pipelines.yml和build.sh并推送到您的BitBucket repo。您的项目的Bitbucket管道构建应该在您的推动后不久开始。 Bitbucket Pipelines将从Docker Hub下载uber / android-build-environment Docker,并检查您的项目,并在Docker内运行build.sh脚本。
如果您的Bitbucket Pipelines构建失败,并且希望在本地计算机上运行相同的环境,您可以在本地计算机上设置Docker的过程非常有用,因此您可以对其进行实验并测试对构建的更改。 sh脚本,然后实际提交并推送到您的回购。
如果你跑(本地),也可以证明是有帮助的:
docker run -it uber/android-build-environment
这将启动Docker(在本地机器上),并将您置于交互式shell中,以便您可以浏览并更好地了解Docker环境。
另请注意,Bitbucket Pipelines在Docker中将您的回购作为构建过程的一部分(据我所知),您在本机上运行的Docker上没有完成此操作,这可能会导致您的某些混淆您的build.sh脚本不存在。
如果您希望本地机器上的目录存在于Docker(您正在本地机器上运行)中,可能需要在您要使用的Docker内的本地机器上测试一个项目,您可以使用以下命令挂载你目前的工作目录到/在本地运行的Docker项目:
docker run -v `pwd`:/project -it uber/android-build-environment
正如@ ming-c在answer中指出的那样,Docker Hub还有很多其他的Docker图像;当然值得浏览一下,看看您能否找到最符合您需求的图像。