[英]jenkinsfile - how to use scripted pipeline to launch a docker node
[英]How to build and run a Docker image in a scripted Jenkinsfile pipeline?
我正在嘗試從腳本化的 Jenkinsfile 在特定構建節點上構建和運行 docker 映像。 我寧願避免切換到聲明式語法。 我的代碼與文檔中的示例非常接近。 圖像按預期構建。 但是運行容器失敗詹金斯抱怨節點的物理機器沒有在容器內運行,並且來自我希望在容器內運行的最內層塊的 echo 和 make 命令沒有執行並且不會出現在日志中。
據我了解,Jenkins 認為容器本身就是構建節點,並且不允許嵌套節點語句。 同時需要一個節點來構建和運行 Docker 鏡像。
我缺少什么來構建和運行圖像? 由於我對 Jenkins 和 Docker 都很陌生,因此我很感激任何提示或建議。
編碼:
node('BuildMachine1')
{
withEnv(envList)
{
dir("/some/path")
{
docker.build("build-image:${env.BUILD_ID}", "-f ${env.WORKSPACE}/build/Dockerfile .").inside
{
echo "Echo from Docker"
sh script: 'make'
}
}
}
}
日志:
Successfully built 8c57cad188ed
Successfully tagged build-image:79
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . build-image:79
.
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] withDockerContainer
BuildMachine1 does not seem to be running inside a container
$ docker run -t -d -u 1004:1005 -w /data/Jenkins_Node/workspace/myFeature/buildaarch64Release -v /data/Jenkins_Node/workspace/myFeature/buildaarch64Release:/data/Jenkins_Node/workspace/myFeature/buildaarch64Release:rw,z -v /data/Jenkins_Node/workspace/myFeature/buildaarch64Release@tmp:/data/Jenkins_Node/workspace/myFeature/buildaarch64Release@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** build-image:87 cat
$ docker top 2242078968bc1ee5ddfd08c73a2e1551eda36c2595f0e4c9fb6e9b3b0af15b8b -eo pid,comm
[Pipeline] // withDockerContainer
看起來容器的入口點的配置方式適用於終端中的手動使用,但不適用於 Jenkins 管道內。 它被設置為ENTRYPOINT ["/usr/bin/env", "bash"]
將其更改為ENTRYPOINT [ "/bin/bash", "-l", "-c" ]
之后,Jenkinsfile 使用了生成的容器如預期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.