#!/usr/bin/env groovy // Deploy a Deployment to k3s. // Usage: deployToK3s(name: 'demo', image: 'nginx', replicas: 2) def call(Map config = [:]) { def name = config.name ?: error('deployToK3s: "name" is required') def image = config.image ?: error('deployToK3s: "image" is required') def replicas = config.replicas ?: 1 def namespace = config.namespace ?: 'default' stage("Deploy ${name}") { writeFile file: 'deploy.yaml', text: """ apiVersion: apps/v1 kind: Deployment metadata: name: ${name} namespace: ${namespace} spec: replicas: ${replicas} selector: matchLabels: app: ${name} template: metadata: labels: app: ${name} spec: containers: - name: ${name} image: ${image} """ sh 'kubectl apply -f deploy.yaml' sh "kubectl rollout status deployment/${name} -n ${namespace} --timeout=90s" } }