我试图使用jenkins和jenkins kubernetes插件为我的kubernetes集群建立一个测试框架。
我可以让jenkins提供pod并运行基本的单元测试,但不清楚的是我如何运行涉及多个pod之间协调的测试。
从本质上讲,我想做这样的事情:
podTemplate(label: 'pod 1', containers: [ containerTemplate(...)]) {
node('pod1') {
container('container1') {
// start service 1
}
}
}
podTemplate(label: 'pod 2', containers[ containerTemplate(...)]) {
node('pod2') {
container('container2') {
// start service 2
}
}
stage ('Run test') {
node {
sh 'run something that causes service 1 to query service 2'
}
}
我有两个主要问题:
> < li>
Pod生命周期:一旦podtemplate之后的块被清除,Pod就会终止。有没有一种公认的方法可以让豆荚一直存活到特定的条件被满足?
来自 docker 映像的 ContainerTemplate:我正在使用 docker 映像来预配每个 kubernetes pod 内的容器,但是应该在这些映像中的文件在“容器”块内似乎不可见/可访问,即使安装的环境和依赖项对于存储库是正确的。如何实际获取 docker 映像中定义的服务,以便在 jenkins 预配的 pod 中运行?
自从我提出这个问题已经有一段时间了,在此期间,我学到了一些东西,让我完成了我一直在问的事情,尽管可能不如我希望的那样整齐。
多服务测试的解决方案最终只是使用一个包含google cloud library的pod模板,并为该工作人员分配一个服务帐户凭证和一个密钥,这样它就可以在集群上< code>kubectl命令。
Dockerfile for work,将“X”替换为所需版本:
FROM google/cloud-sdk:alpine
// Install some utility functions.
RUN apk add --no-cache \
git \
curl \
bash \
openssl
// Used to install a custom version of kubectl
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/vX.XX.X/bin/linux/amd64/kubectl &&\
chmod +x ./kubectl &&\
mv ./kubectl /usr/local/bin/kubectl
// Helm to manage deployments.
RUN curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh &&\
chmod 700 get_helm.sh && ./get_helm.sh --version vX.XX.X
然后在groovy管道中:
pipeline {
agent {
kubernetes {
label 'kubectl_helm'
defaultContainer 'jnlp'
serviceAccount 'helm'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: gcloud
image: your-docker-repo-here
command:
- cat
tty: true
"""
}
}
environment {
GOOGLE_APPLICATION_CREDENTIALS = credentials('google-creds')
}
stages {
stage('Do something') {
steps {
container('gcloud') {
sh 'kubectl apply -f somefile.yaml'
sh 'helm install something somerepo/somechart'
}
}
}
}
现在,我可以访问 helm 和 kubectl 命令,我可以随意上下移动 Pod 或服务。它仍然没有解决能够使用它们的内部“上下文”来访问文件的问题,但至少它给了我一种运行集成测试的方法。
注意:为了正常工作,您需要一个用于服务号名称的服务号,以及存储在jenkins凭据存储中的凭据。为了使helm命令正常工作,您需要确保Tiller安装在您的kubernetes集群上。此外,不要从GOOGLE_APPLICATION_CREDENTIALS
更改env键的名称,因为gsutils工具将查找该环境变量。
问题内容: 我使用kubeadm Kubernetes 1.9 RBAC集群进行了自举,并开始在基于jenkins / jenkins:lts的POD Jenkins内部。我想尝试https://github.com/jenkinsci/kubernetes- plugin 。我已经基于https://gist.github.com/lachie83/17c1fff4eb58cf75c5fb11a
最近我一直试图在詹金斯内部建立一个管道。目标是创建一个pod并执行kubernetes部署。 但是当我运行管道作业时,它会一个接一个地创建pod,它永远不会完成作业- 设置kubernetes集群-成功 安装jenkins-成功 连接jenkins到kubernetes集群-成功 这是管道脚本- 不-Pods创建成功,kubernetes部署也成功,但jenins管道从未停止。 我的jenkins
我正在运行 jenkins 作业来构建我们的 maven 应用程序并部署到 kubernetes 集群中。为此,我创建了 Pod 容器模板来部署我的模块。 当我运行构建我的jenkins作业时,我的构建失败,出现以下错误, 与此同时,当我检查kubernetes主服务器时,我可以看到pods正在尝试调度,并且在几秒钟后返回到终止状态。 管道脚本 请在下面找到主机配置 kubectl错误日志 你能请
问题内容: 我正在使用dotnet测试对dotnet核心库进行单元测试。我像这样在我的詹金斯奴隶上进行测试。 测试报告如下所示。 我在詹金斯(Jenkins)工作DSL中使用一个块来尝试阅读报告。 詹金斯似乎看到了这份报告。 记录测试结果 但这不是解析结果并将其合并到报告中。我在Jenkins构建仪表板上看不到测试报告。 有任何想法吗? 问题答案: 您可以使用以下管道代码来运行和发布dotnet核
我正在尝试从Jenkins管道使用helm部署容器。我已经为jenkins安装了库伯内特斯插件,并在本地运行kubernetes URL和凭据中的配置文件中提供了它。当我执行时,它显示。 但是当我从管道运行helm install命令时,它会出错。 注意:我可以使用 CLI 以及通过使用和传递信誉文件变量名称(在 jenkins 凭据中创建)从 Jenkins 管道执行所有操作。我只想这样做,而不
translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/jenkins_ci.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e Jenkins CI Jenkins continuous integration server on S