/** * Returns a K8s pod YAML string for use in agent { kubernetes { yaml ... } } * * config keys (all optional): * nodeImage - default: node:18-slim * harborRegistry - default: harbor-core.harbor.svc.cluster.local * withTools - include alpine/git container, default: false * withSonar - include sonarsource/sonar-scanner-cli container, default: false */ def call(Map config = [:]) { def nodeImage = config.nodeImage ?: 'node:18-slim' def harborReg = config.harborRegistry ?: 'harbor-core.harbor.svc.cluster.local' def withTools = config.withTools ?: false def withSonar = config.withSonar ?: false def toolsBlock = withTools ? """ - name: tools image: alpine/git command: - sleep args: - infinity""" : "" def sonarBlock = withSonar ? """ - name: sonar image: sonarsource/sonar-scanner-cli:latest command: - sleep args: - infinity""" : "" return """ apiVersion: v1 kind: Pod spec: containers: - name: node image: ${nodeImage} command: - sleep args: - infinity - name: docker image: docker:dind securityContext: privileged: true env: - name: DOCKER_TLS_CERTDIR value: "" args: - --insecure-registry=${harborReg}${toolsBlock}${sonarBlock} """.stripIndent() }