我对Bitbucket管道(Beta版)和Docker很陌生,以前没有配置项集成的经验
我遵循了这个问题,但是对于初学者没有明确的描述
我正在尝试使用docker容器为Android项目在Bitbucket管道中设置持续集成(CI)
我遵循的步骤
步骤1.已安装Docker软件工具。已成功安装。
第二步。已成功创建虚拟机
$ eval "$(docker-machine env default)"
$ docker build -t uber/android-build-environment .
docker run -i -v $PWD:/project -t uber/android-build-environment /bin/bash /project/ci/build.sh
错误出现:
/bin/bash:/project/ci/build.sh:没有这样的文件或目录
Docker-机器详细信息
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v1.12.1
docker service ls
码头机环境
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.XX.XXX:XXXX"
export DOCKER_CERT_PATH="/Users/gaurav/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)
如果我正确理解您的问题:技术上您甚至不需要在本地机器上安装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
我喜欢在自己的ash脚本文件(build.sh
)中组织构建过程,但这是可选的(您可以在script
指令下在yaml文件中放置多个项目符号命令)。bitbucket-pipelines.yml
文件的示例(以及更多详细信息)可以在“Bitbucket管道语言指南”页面中找到。
我的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依赖项,如本答案所述。
为了更好地衡量,请相应地设置构建脚本的权限:
git update-index --chmod=+x build.sh
确保已启用Bitbucket管道(从您的回购页面:设置
->管道:设置
->启用管道
)。
然后只需提交bitbucket-pipelines.yml
和build.sh
并将其推送到您的BitBucket repo。为项目生成的Bitbucket管道应在推送后不久开始。Bitbucket管道将从Docker Hub下载uber/android-build-environment
Docker,签出您的项目,并在Docker中运行build.sh
脚本。
如果您的Bitbucket管道构建失败,并且您希望在本地计算机上运行相同的环境,那么您可以在实际提交和推送到repo之前对其进行实验并测试对build.sh
脚本的更改,那么您描述的在本地计算机上设置Docker的过程将非常有用。
如果运行(本地),也可能会有帮助:
html" target="_blank">docker run -it uber/android-build-environment
这将启动Docker(在您的本地机器上)并将您置于一个交互式shell中,这样您就可以浏览并更好地了解Docker环境。
还要注意,Bitbucket管道将您的repo克隆到Docker中,作为构建过程的一部分(据我所知),您没有在本地计算机上运行的Docker上进行此操作,这可能会导致您对build.sh
脚本不存在的一些困惑。
如果您希望本地计算机上的目录存在于Docker中(您正在本地计算机上运行该目录,可能是为了测试在本地计算机上在您要使用的Docker中构建项目),您可以使用以下命令将当前工作目录挂载到本地运行的Docker中的/project
:
docker run -v `pwd`:/project -it uber/android-build-environment
更多详细信息可以在将主机目录装入数据卷中找到。
正如@Ming-C在他们的回答中指出的,Docker Hub上还有很多其他Docker映像可用;它当然值得四处浏览,看看你是否能找到一个最适合你需要的图像。
我试图建立持续集成(CI)在Bitbucket管道为Android。 我已经使用Android Studio 2.1.1创建了一个样例空白活动。 当运行时,会出现以下错误: 在工作目录中运行会得到:
问题内容: 我正在尝试在Android的Bitbucket管道中设置持续集成(CI)。 我使用Android Studio 2.1.1创建了一个示例空白活动。 通过管道,我使用的是uber / android-build- environment Docker容器,可以很好地创建环境。这是我的 由于uber / android-build-environment预计将按照以下方式运行,因此需要进行
经过几个小时的努力,我能够设置我的docker容器。我的yml文件如下: 但是,当我在bild.gradle文件中使用'com.google.android.gms:play-services-location:11.0.2'时,我最终收到以下错误: 非常感谢任何帮助。
我们已经建立了管道脚本,工作得很好。最近,我们决定使用bitbucket管道自动部署到elastic beanstalk,并遵循使用命令进行部署的教程。显然,此命令在管道上失败。配置文件似乎是合法的,因为它在本地运行。它还可以在管道文件中指定的同一图像的容器中运行,也可以从本地使用docker exec在同一图像的容器中运行命令。下面是管道文件和我们使用命令得到的错误。我显然漏掉了什么。如有任何帮
我正在执行一个构建步骤,该步骤处理 Docker Swarm 模式群集中的常见部署任务。由于这是我们和其他人的共同问题,因此我们将此构建步骤共享为 BitBucket 管道:https://bitbucket.org/matchory/swarm-secret-pipe/ 管道需要使用 命令来处理远程 Docker 安装。但是,这不起作用,因为管道运行时找不到 docker 可执行文件。 以下内容