63人参与 • 2024-12-20 • Docker
dockerexecute
通常是一个自定义的函数或者由特定的 jenkins 库(如 piper-lib
)提供,用于在 docker 容器中执行特定的命令。这类函数可以帮助在构建或测试阶段管理 docker 容器的生命周期,确保步骤在容器内运行。它的作用是启动一个 docker 容器,并在该容器中执行提供的命令.
因为我的测试背景正好是 公司内部的 docker 镜像存储库中的有一个现成的专用于测试的镜像;所以我直接在这个pipline脚本中去运用了这个方法,给大家看个例子顺便讲解一下:
stage('test') { node { dockerexecute(script: this, dockerimage: "your-docker-image", dockername: 'your-docker-name'{ // 在 docker 容器内部执行以下命令 sh ''' //例如安装依赖,设置环境变量,执行关键脚本等等 python main.py ''' }
script: this
:
this
传递给 script
参数。它通常用于在 dockerexecute
函数内部引用当前脚本或上下文。dockerimage: "your-docker-image",
dockername: 'your-docker-name'
作用总结
script: this
引用当前脚本上下文。dockerimage
指定要使用的 docker 镜像。dockername
为启动的容器命名。docker.build
是 jenkins 的 docker 插件提供的一个方法,用于构建 docker 镜像。它会读取当前目录下的 dockerfile
并构建一个新的 docker 镜像,有助于将你的应用和所有的依赖封装到一个标准的镜像中。
1、使用场景:
2、结合使用
docker.build
构建镜像,然后用该镜像运行某些任务,如测试套件。3、定义场景
(1)dockerfile示例:
# 使用已有基础镜像 from your-docker-image # 设置工作目录 workdir /web-test # 安装系统依赖包括 chromedriver 和 google-chrome run apt-get update && apt-get install -y \ xvfb \ x11-utils \ libgl1-mesa-glx \ wget \ unzip \ curl \ gnupg \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 安装 chromedriver run wget -o /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_linux64.zip \ && unzip /tmp/chromedriver.zip -d /usr/local/bin/ \ && rm /tmp/chromedriver.zip # 下载并安装 google-chrome run wget -o /tmp/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ && apt-get update && apt-get install -y --no-install-recommends /tmp/google-chrome.deb \ && rm /tmp/google-chrome.deb # 将 requirements.txt 复制到工作目录 copy requirements.txt . # 安装 python 依赖 run pip install --no-cache-dir -r requirements.txt # 将项目文件复制到工作目录 copy . . # 设置环境变量 env display=:99 # 启动 xvfb 并运行应用 cmd xvfb :99 -screen 0 1920x1080x24 & python pana/generatereport.py
(2)jenkinsfile示例:
@library(["piper-lib", "piper-lib-os"]) _ pipeline { agent any stages { stage('checkout') { steps { checkout scm } } stage('build-image') { steps { script { // 使用当前目录下的 dockerfile 构建新的 docker 镜像 docker.build('my-repo/my-python-app:latest', '-f dockerfile .') } } } stage('test') { steps { script { dockerexecute(script: this, dockerimage: "my-repo/my-python-app:latest", dockername: 'python') { sh ''' set -e # 设置 display 环境变量 export display=:99 # 启动 xvfb 并在后台运行 xvfb :99 -screen 0 1920x1080x24 & # 等待 xvfb 完全启动 sleep 5 # 打印 python 版本信息 python --version # 升级 pip python -m pip install --upgrade pip # 切换到工作目录 cd $workspace # 安装 python 依赖 python -m pip install -r requirements.txt # 运行 python 脚本 python pana/generatereport.py # 可选:确保完成后停止 xvfb killall xvfb ''' } } } } } post { always { echo 'cleaning up...' // 放置任何清理步骤 } success { echo 'pipeline succeeded' } failure { echo 'pipeline failed' } } }
1、构建与运行:
docker.build
: 用于构建 docker 镜像,基于项目内的 dockerfile。dockerexecute
: 用于在构建好的 docker 镜像基础上运行命令。2、具体用途:
docker.build
: 主要用于 ci 流程中的构建步骤,确保应用代码和依赖打包在一个镜像中。dockerexecute
: 用于在特定的 docker 镜像中执行任务,适合用于测试、执行脚本等需要隔离环境的步骤。到此这篇关于dockerexecute 函数和docker.build的区别的文章就介绍到这了,更多相关dockerexecute 函数和docker.build内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论