Docker 作为 Jenkins Slave 的容器

Docker Containers as Jenkins Slave

我想知道是否可能出现以下情况,请帮帮我:-

场景一:-

我将本地系统作为 Jenkins Master,每次我需要 运行 我的自动化测试脚本的从属系统时,一个 docker 容器作为 Jenkins 从属系统启动并执行我的脚本在从机上,执行完成后容器被销毁。

这可能吗。我想将我的本地系统保留为 Jenkins master。

场景二:-

我可以启动多个容器作为本地系统的 Jenkins slave 作为 Jenkins master。

谢谢

场景 1 至少包含在 JENKINS/Kubernetes Plugin: see its README

Based on the Scaling Docker with Kubernetes article, automates the scaling of Jenkins agents running in Kubernetes.

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

我已经在这个 link:

写了关于场景 1(使用 Kubernetes)的消息

这里是post.

我建议您通过创建 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 服务的名称):

凭据:

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

我的说明是给 kubernetes 里面的 Jenkins master 的。如果你想要它在集群之外(但在集群内部)我认为你必须使用简单的 login/password 凭据。

希望对你有所帮助