当前位置: 首页 > 知识库问答 >
问题:

使用docker和bitbucket管道的android环境

华易安
2023-03-14

我对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)

共有1个答案

卞安邦
2023-03-14

如果我正确理解您的问题:技术上您甚至不需要在本地机器上安装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.ymlbuild.sh并将其推送到您的BitBucket repo。为项目生成的Bitbucket管道应在推送后不久开始。Bitbucket管道将从Docker Hub下载uber/android-build-environmentDocker,签出您的项目,并在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 可执行文件。 以下内容