Kubernetes Windows 节点动态提供 Jenkins Agent

2023年 1月 4日 37.7k 0

在前面两篇文档,在 Kubernetes 上动态创建 Jenkins Slave 和 Kubernetes 添加 Windows 节点提供 Jenkins 构建动态 Agent 的基础之上,本篇文档主要尝试在 Kubernetes 上动态提供 Windows 构建 Agent 。

1. 新增流水线

Kubernetes 与 Jenkins 集成部分可以参考上面的两篇文档,这里直接新建两条流水线进行测试。

  • windows - jenkins 内置的流水线示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Runs a build on a Windows pod.
 * Tested in EKS: https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html
 */
podTemplate(yaml: '''
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: jnlp
    image: jenkins/inbound-agent:windowsservercore-1809
  - name: shell
    image: mcr.microsoft.com/powershell:preview-windowsservercore-1809
    command:
    - powershell
    args:
    - Start-Sleep
    - 999999
  nodeSelector:
    kubernetes.io/os: windows
''') {
    node(POD_LABEL) {
        container('shell') {
            powershell 'Get-ChildItem Env: | Sort Name'
        }
    }
}
  • windows-dotnet

使用 dotnet 镜像进行构建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pipeline {
  agent {
    kubernetes {
      yaml """
apiVersion: v1
kind: Pod
metadata:
  name: windows
spec:
  containers:
  - name: jnlp
    image: jenkins/inbound-agent:windowsservercore-1809
    tty: true
  - name: windows-dotnet
    image: mcr.microsoft.com/dotnet/core/sdk:2.1
    tty: true
  nodeSelector:
    kubernetes.io/os: windows
"""
    }
  }
  stages {
    stage('Run on windows') {
      steps {
        container(name:'windows-dotnet'){
          bat 'dotnet -h'
        } 
      }
    }
  }
}

2. 查看结果

  • windows

  • windows-dotnet

  • 查看 Windows 下载的镜像
1
2
3
4
5
6
docker images

REPOSITORY                          TAG                              IMAGE ID            CREATED             SIZE
mcr.microsoft.com/powershell        preview-windowsservercore-1809   ff3a59b7e85e        3 days ago          5.24GB
mcr.microsoft.com/dotnet/core/sdk   2.1                              4ca3f3cfa1e2        4 days ago          1.66GB
jenkins/inbound-agent               windowsservercore-1809           45f5745f2aab        4 days ago          4.09GB

Windows 节点的磁盘空间一定要很大才行。

3. 参考

  • https://technologists.dev/posts/windows-containers/

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论