在kubernetes中使用jenkins测试flask应用



我在Kubernetes集群中有几个flask应用程序。现在的想法是在这些图像进入生产之前对其进行测试。最后我爱上了詹金斯。

我部署了一个Jenkins的docker映像,设置了它并能够附加到我的存储库。发生的第一个问题是依赖关系。由于每个存储库都带着自己的依赖项运行,因此简单的Jenkins映像似乎无法下载所需的需求。这里是我使用的Jenkins图像:

FROM jenkins/jenkins:lts-alpine
USER root
RUN apk add python3 && 
python3 -m ensurepip && 
pip3 install --upgrade pip setuptools && 
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && 
if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && 
rm -r /root/.cache
RUN pip install alpine
RUN apk add pkgconf
RUN apk add build-base
RUN apk add python3-dev
RUN apk -U upgrade
RUN apk add --no-cache libffi-dev openssl-dev
RUN apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo
RUN apk update
USER jenkins

例如,此映像无法下载scipy库,也无法下载blis库。然后我尝试通过安装Jenkins来安装ubuntu镜像,但是我没有成功部署它。

通过阅读更多的在线,我已经找到了解决方案,使用Jenkins来拉其他docker映像并相应地测试它们。但是我总是读到在docker中运行docker并不是一个真正的最佳实践。

简而言之,在Kubernetes环境中使用Jenkins测试docker映像的最佳实践是什么?是否有可能在jenkins内部运行ubuntu映像,以便在丢失库的情况下,我可以始终执行到pod和sudo apt-get install X的丢失包?最后,如果在docker中运行docker最终不是一个反模式,那么您将如何设置测试?

注意:每个flask存储库都有自己的测试套件,生成XML报告供junit解析。

如果您想在Jenkins中自定义执行环境,那么我建议使用jenkins/agent(或jenkins/inbound-agent)作为基础映像构建您自己的Jenkins代理。

如果在Kubernetes中运行Jenkins,你可以使用Jenkins Helm Chart(或Jenkins Operator)并将代理映像修改为你自定义的Jenkins代理映像。

相关内容

最新更新