k8s -DevOps 使用流水线 pod(maven +openjdk11)执行sonar扫描
选择 Jenkins Agentagent 部分指定整个流水线或特定阶段 (Stage) 将在 Jenkins 环境中执行的位置,具体取决于该 agent 部分的放置位置。该部分必须在 pipeline 块的顶层进行定义,但是阶段级别的使用为可选。有关更多信息,请参见 Jenkins 官方文档。内置 podTemplatepodTemplate 是一种 Pod 模板,该 Pod 用于创建 Agen
选择 Jenkins Agent
agent 部分指定整个流水线或特定阶段 (Stage) 将在 Jenkins 环境中执行的位置,具体取决于该 agent 部分的放置位置。该部分必须在 pipeline 块的顶层进行定义,但是阶段级别的使用为可选。有关更多信息,请参见 Jenkins 官方文档。
内置 podTemplate
podTemplate 是一种 Pod 模板,该 Pod 用于创建 Agent。用户可以定义在 Kubernetes 插件中使用的 podTemplate。(理解:这个可以为流水线运行提供执行环境,如:maven、jdk 等等)
在目前版本中,KubeSphere 内置了 4 种类型的 podTemplate:base、nodejs、maven 和 go,并且在 Pod 中提供隔离的 Docker 环境(通过Jenkins Configuration as Code 挂载宿主机的docker环境)。
当流水线运行时,每个 Jenkins Agent Pod 必须具有一个名为 jnlp 的容器,用于 Jenkins Controller 和 Jenkins Agent 之间进行通信。另外,用户可以在 podTemplate 中添加容器以满足自己的需求。用户可以选择使用自己的 Pod YAML 来灵活地控制运行时环境 (Runtime),并且可以通过 container 命令来切换容器。请参见以下示例。
pipeline {
agent {
kubernetes {
//cloud 'kubernetes'
label 'mypod'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.8.4-openjdk-11
command: ['cat']
tty: true
"""
}
}
stages {
stage('clone code') {
agent none
steps {
container('base') {
git(credentialsId: 'my-gitlab', url: 'http://xxx/demo.git', changelog: true, poll: false)
}
}
}
stage('Run maven') {
steps {
container('maven') {
sh 'mvn -version'
sh '''
cd backend-flow
mvn clean verify sonar:sonar \
-Dsonar.projectKey=test \
-Dsonar.host.url=http://k8s:31317 \
-Dsonar.login=lcp
'''
}
}
}
}
}
以上是自定义了pod(maven +openjdk11)执行sonar扫描。
以下是设置pod配置文件挂载
agent {
kubernetes {
label 'cvicse-pod'
yaml '''
apiVersion: v1
kind: Pod
spec:
volumes:
- name: maven-settings
configMap:
name: ks-devops-agent-maven
defaultMode: 420
containers:
- name: maven
image: maven:3.8.4-openjdk-11
volumeMounts:
- name: maven-settings
readOnly: true
mountPath: /usr/share/maven/conf/settings.xml
subPath: settings.xml
command: [\'cat\']
tty: true
'''
}
}
更多推荐
所有评论(0)