mirror of
https://github.com/jenkinsci/kubernetes-operator.git
synced 2026-09-30 05:01:10 +02:00
Removed image CRD, updated plugins
This commit is contained in:
@@ -1,129 +0,0 @@
|
||||
package resources
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/jenkinsci/kubernetes-operator/api/v1alpha2"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
)
|
||||
|
||||
const (
|
||||
NameWithSuffixFormat = "%s-%s"
|
||||
PluginDefinitionFormat = "%s:%s"
|
||||
BuilderDockerfileArg = "--dockerfile=/workspace/dockerfile/Dockerfile"
|
||||
BuilderContextDirArg = "--context=dir://workspace/"
|
||||
BuilderPushArg = "--no-push"
|
||||
BuilderDigestFileArg = "--digest-file=/dev/termination-log"
|
||||
BuilderSuffix = "builder"
|
||||
DockerfileStorageSuffix = "dockerfile-storage"
|
||||
DockerfileNameSuffix = "dockerfile"
|
||||
JenkinsImageBuilderImage = "gcr.io/kaniko-project/executor:latest"
|
||||
JenkinsImageBuilderName = "jenkins-image-builder"
|
||||
JenkinsImageDefaultBaseImage = "jenkins/jenkins:lts"
|
||||
DockerfileName = "Dockerfile"
|
||||
DockerfileTemplate = `FROM %s
|
||||
RUN curl -o /tmp/install-plugins.sh https://raw.githubusercontent.com/jenkinsci/docker/master/install-plugins.sh
|
||||
RUN chmod +x /tmp/install-plugins.sh
|
||||
RUN install-plugins.sh %s `
|
||||
)
|
||||
|
||||
var log = logf.Log.WithName("controller_jenkinsimage")
|
||||
|
||||
// NewBuilderPod returns a busybox pod with the same name/namespace as the cr.
|
||||
func NewBuilderPod(cr *v1alpha2.JenkinsImage) *corev1.Pod {
|
||||
name := fmt.Sprintf(NameWithSuffixFormat, cr.Name, BuilderSuffix)
|
||||
args := []string{BuilderDockerfileArg, BuilderContextDirArg, BuilderPushArg, BuilderDigestFileArg}
|
||||
volumes := getVolumes(cr)
|
||||
volumeMounts := getVolumesMounts(cr)
|
||||
p := &corev1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: cr.Namespace,
|
||||
},
|
||||
Spec: corev1.PodSpec{
|
||||
RestartPolicy: corev1.RestartPolicyNever,
|
||||
Containers: []corev1.Container{
|
||||
{
|
||||
Name: JenkinsImageBuilderName,
|
||||
Image: JenkinsImageBuilderImage,
|
||||
Args: args,
|
||||
VolumeMounts: volumeMounts,
|
||||
},
|
||||
},
|
||||
Volumes: volumes,
|
||||
},
|
||||
}
|
||||
return p
|
||||
}
|
||||
|
||||
// NewDockerfileConfigMap returns a busybox pod with the same name/namespace as the cr.
|
||||
func NewDockerfileConfigMap(cr *v1alpha2.JenkinsImage) *corev1.ConfigMap {
|
||||
dockerfileContent := fmt.Sprintf(DockerfileTemplate, getDefaultedBaseImage(cr), getPluginsList(cr))
|
||||
name := fmt.Sprintf(NameWithSuffixFormat, cr.Name, DockerfileNameSuffix)
|
||||
data := map[string]string{DockerfileName: dockerfileContent}
|
||||
dockerfile := &corev1.ConfigMap{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: cr.Namespace,
|
||||
},
|
||||
Data: data,
|
||||
}
|
||||
return dockerfile
|
||||
}
|
||||
|
||||
func getPluginsList(cr *v1alpha2.JenkinsImage) string {
|
||||
logger := log.WithName("jenkinsimage_getPluginsList")
|
||||
plugins := ""
|
||||
for _, v := range cr.Spec.Plugins {
|
||||
plugins += fmt.Sprintf(PluginDefinitionFormat, v.Name, v.Version) + " "
|
||||
logger.Info(fmt.Sprintf("Adding plugin %s:%s ", v.Name, v.Version))
|
||||
}
|
||||
return plugins
|
||||
}
|
||||
|
||||
func getDefaultedBaseImage(cr *v1alpha2.JenkinsImage) string {
|
||||
if len(cr.Spec.BaseImage.Name) != 0 {
|
||||
return cr.Spec.BaseImage.Name
|
||||
}
|
||||
return JenkinsImageDefaultBaseImage
|
||||
}
|
||||
|
||||
func getVolumes(cr *v1alpha2.JenkinsImage) []corev1.Volume {
|
||||
name := fmt.Sprintf(NameWithSuffixFormat, cr.Name, DockerfileStorageSuffix)
|
||||
storage := corev1.Volume{
|
||||
Name: name,
|
||||
VolumeSource: corev1.VolumeSource{
|
||||
EmptyDir: &corev1.EmptyDirVolumeSource{},
|
||||
},
|
||||
}
|
||||
|
||||
name = fmt.Sprintf(NameWithSuffixFormat, cr.Name, DockerfileNameSuffix)
|
||||
config := corev1.Volume{
|
||||
Name: name,
|
||||
VolumeSource: corev1.VolumeSource{
|
||||
ConfigMap: &corev1.ConfigMapVolumeSource{
|
||||
LocalObjectReference: corev1.LocalObjectReference{Name: name},
|
||||
},
|
||||
},
|
||||
}
|
||||
volumes := []corev1.Volume{storage, config}
|
||||
return volumes
|
||||
}
|
||||
|
||||
func getVolumesMounts(cr *v1alpha2.JenkinsImage) []corev1.VolumeMount {
|
||||
name := fmt.Sprintf(NameWithSuffixFormat, cr.Name, DockerfileStorageSuffix)
|
||||
storage := corev1.VolumeMount{
|
||||
Name: name,
|
||||
MountPath: "/workspace",
|
||||
}
|
||||
name = fmt.Sprintf(NameWithSuffixFormat, cr.Name, DockerfileNameSuffix)
|
||||
config := corev1.VolumeMount{
|
||||
Name: name,
|
||||
MountPath: "/workspace/dockerfile",
|
||||
}
|
||||
volumeMounts := []corev1.VolumeMount{storage, config}
|
||||
return volumeMounts
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package plugins
|
||||
|
||||
const (
|
||||
configurationAsCodePlugin = "configuration-as-code:1.46"
|
||||
configurationAsCodePlugin = "configuration-as-code:1.47"
|
||||
gitPlugin = "git:4.5.0"
|
||||
jobDslPlugin = "job-dsl:1.77"
|
||||
kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:0.15"
|
||||
kubernetesPlugin = "kubernetes:1.28.6"
|
||||
kubernetesPlugin = "kubernetes:1.29.0"
|
||||
workflowAggregatorPlugin = "workflow-aggregator:2.6"
|
||||
workflowJobPlugin = "workflow-job:2.40"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user