使用 docker 运行一个竹脚本
Posted
技术标签:
【中文标题】使用 docker 运行一个竹脚本【英文标题】:Run a bamboo script with docker 【发布时间】:2019-06-27 13:22:57 【问题描述】:在 Isolate 构建 Docker 容器中执行 Bamboo 脚本任务时出现以下错误:
simple 27-Jun-2019 Starting task 'XYZ' of type 'com.atlassian.bamboo.plugins.scripttask:task.builder.script'
command 27-Jun-2019 Beginning to execute external process for build 'XYZ'\n ... running command line: \n/tmp/runInDocker3301468521768702357.sh /home/bamboo/bamboo-agent-home/temp/XYZ-8591248614821374698.sh\n ... in: /tmp\n
error 27-Jun-2019 flag provided but not defined: -e
error 27-Jun-2019 See 'docker exec --help'.
simple 27-Jun-2019 Failing task since return code of [/tmp/runInDocker3301468521768702357.sh /home/bamboo/bamboo-agent-home/temp/XYZ-8591248614821374698.sh] was 125 while expected 0
simple 27-Jun-2019 Finished task 'list buckets' with result: Failed
配置类似于此链接Docker Runner 如下所示:
Isolate build -> Docker container -> Docker image: `ubuntu:16.04`
脚本任务是:
Shell -> Inline
内容简单如下:
echo "Hallo AWS"
#!/bin/bash
Bamboo 版本是6.5.1
。
【问题讨论】:
你添加了-e
没有值吗?
你的脚本应该以#!/bin/bash
开头
@LinSel 我可以在哪里添加没有值的 -e?
删除 #!/bin/bash
返回相同的错误
【参考方案1】:
面临相同/相似的问题。我开始我的 Bamboo 计划
Isolate build -> Docker container -> Docker image: centos
我有一个返回一些数据的内联脚本任务。
whoami
ls -la
pwd
输出不是来自容器,而是来自代理。我希望路径是 /home/bamboo,因为这是我直接在 docker 中运行图像时开始的地方。
19-Mar-2020 15:07:41 bamboo
19-Mar-2020 15:07:41 total 0
19-Mar-2020 15:07:41 drwxr-xr-x 2 bamboo bamboo 6 Mar 19 19:07 .
19-Mar-2020 15:07:41 drwxr-xr-x 3 root root 30 Mar 19 19:07 ..
19-Mar-2020 15:07:41 /home/bamboo/bamboo-agent-home/xml-data/build-dir/SANDY-JOB1
【讨论】:
对于我的解决方案,我最终在脚本任务中使用了“docker run...”。我们已转换所有计划,并且按预期工作。【参考方案2】:如果您尝试在 Bamboo Docker Runner 映像上设置环境变量(隔离构建而不是使用代理环境),您有三个选项:
-
修改您用作构建容器的基本映像以包含环境选项。这是通过使用 Dockerfile(下面的示例)然后将图像保存在 Bamboo 可以访问的存储库(例如 Docker Hub)中完成的:
来自微软/dotnet:sdk
ENV foo=bar
入口点 ["dotnet", "myRuntime.dll"]
使用作业中的任务通过脚本设置所需的环境变量。
使用代理环境,并作为第一个任务运行 Docker 任务,并传入构建映像和适当的环境变量标志。
【讨论】:
我正在使用这里描述的 Isolate 构建:confluence.atlassian.com/bamboo/docker-runner-946020207.html 在哪里可以添加环境标志?以上是关于使用 docker 运行一个竹脚本的主要内容,如果未能解决你的问题,请参考以下文章
使用 docker 文件运行脚本文件 (.sh) 时权限被拒绝
Docker:如何知道 mongo 是不是在 Alpine/node 中使用 shell 脚本文件运行