作为Jenkins奴隶的Docker容器

时间:2018-02-08 05:22:54

标签: selenium docker jenkins automated-tests jenkins-slave

我想知道以下可能的情况,请帮帮我:

情景1 : -

我的本​​地系统是Jenkins Master,每当我需要一个奴隶来运行我的自动化测试脚本时,一个docker容器就会像Jenkins奴隶一样旋转,我的脚本在奴隶上执行,并且在执行完成后容器被摧毁。

这可能吗?我想把我的本地系统保留为Jenkins大师。

场景2 : -

我可以将多个容器作为本地系统的Jenkins从属设备作为Jenkins主机启动。

由于

2 个答案:

答案 0 :(得分:3)

情景1至少由JENKINS/Kubernetes Plugin涵盖:请参阅its README

  

基于Scaling Docker with Kubernetes article,自动扩展在Kubernetes中运行的Jenkins代理。

但这需要Kubernetes设置,这意味着,在您的情况下(如果您只有一台机器),minikube

答案 1 :(得分:1)

我在这个链接上写了一个关于场景1(与Kubernetes)的消息:

Jenkins kubernetes plugin not working

这里的帖子。

我建议你不要使用证书,而是通过创建serviceAccount来使用kubernetes中的凭据:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins

使用该serviceAccount部署jenkins:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: jenkins
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:           
      serviceAccountName: jenkins 
....

我向您展示了Kubernetes插件的截图(注意JNLP端口的Jenkins隧道,' jenkins'是我的kubernetes服务的名称):

enter image description here

enter image description here

凭证:

enter image description here

然后填写文件(ID将自动生成,说明将显示在凭据列表框中),但请务必按​​照我之前的说法在kubernetes中创建serviceAccount:

enter image description here

我的指示是针对kubernetes内的Jenkins大师。如果你想在群集之外(但是奴隶在里面),我认为你必须使用简单的登录/密码凭证。

我希望它可以帮到你。