From afa62bcd900543fc442f9cccdb4324685a581f3e Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Tue, 3 Jun 2025 11:25:34 +0200 Subject: [PATCH] Jenkins personalizado con Docker --- Imagen/Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ Imagen/Makefile | 7 +++++++ Makefile | 28 ++++++++++++++++++++++++++++ jenkins-02-volume.yaml | 4 ++-- jenkins-03-deployment.yaml | 5 ++++- reg-secret.yaml | 8 ++++++++ 6 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 Imagen/Dockerfile create mode 100644 Imagen/Makefile create mode 100644 Makefile create mode 100644 reg-secret.yaml diff --git a/Imagen/Dockerfile b/Imagen/Dockerfile new file mode 100644 index 0000000..01be326 --- /dev/null +++ b/Imagen/Dockerfile @@ -0,0 +1,37 @@ +# Use Jenkins base image +FROM jenkins/jenkins:latest + +# Switch to root user +USER root + +# Update package lists and install necessary tools +RUN apt-get update && \ + apt-get install -y sudo vim curl wget + + +# Set root password +RUN echo 'root:abc123' | chpasswd + +# Add jenkins user to sudoers +RUN echo "jenkins ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + +# Install Docker CLI +RUN apt-get update +RUN apt-get install -y apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common +RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg +RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && apt-get update + +RUN curl -fsSL https://get.docker.com/ | sh + +# Create the Docker Group +# RUN groupadd docker + +# Add Jenkins User to Docker Group +RUN usermod -aG docker jenkins + +# Switch back to the Jenkins user +USER jenkins diff --git a/Imagen/Makefile b/Imagen/Makefile new file mode 100644 index 0000000..55f57af --- /dev/null +++ b/Imagen/Makefile @@ -0,0 +1,7 @@ +install: + + echo "Creando imagen con version '${IMG_VERSION}' en el registry '${REGISTRY}'" + + docker build --no-cache -t ${REGISTRY}/jenkins-docker:${IMG_VERSION} . + docker push ${REGISTRY}/jenkins-docker:${IMG_VERSION} + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dd99dda --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +#export ARQUITECTURA := $(shell lscpu |grep itectur | tr -d ' '| cut -f2 -d':') +export REGISTRY=registry.reymota.es +export IMG_VERSION = 1.20 + +# limpia todo +all: imagen clean install + +imagen: + cd Imagen/; make + +install: + -kubectl create -f namespace.yaml + -kubectl create -f reg-secret.yaml + -kubectl create -f jenkins-01-serviceAccount.yaml + + -kubectl create -f jenkins-02-volume.yaml + -envsubst < jenkins-03-deployment.yaml |kubectl create -f - + -kubectl create -f jenkins-04-service.yaml + -kubectl create -f jenkins-05-ingress.yaml + +clean: + -kubectl delete -f jenkins-05-ingress.yaml + -kubectl delete -f jenkins-04-service.yaml + -envsubst < jenkins-03-deployment.yaml |kubectl delete -f - + -kubectl delete -f jenkins-02-volume.yaml + -kubectl delete -f jenkins-01-serviceAccount.yaml + -kubectl delete -f reg-secret.yaml + -kubectl delete -f namespace.yaml diff --git a/jenkins-02-volume.yaml b/jenkins-02-volume.yaml index 07cadfb..f7ae6c5 100644 --- a/jenkins-02-volume.yaml +++ b/jenkins-02-volume.yaml @@ -21,7 +21,7 @@ spec: accessModes: - ReadWriteOnce local: - path: /mnt/Externo/Jenkins + path: /Users/creylopez/RancherStorage/Jenkins nodeAffinity: required: nodeSelectorTerms: @@ -29,7 +29,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - imac + - lima-rancher-desktop --- apiVersion: v1 kind: PersistentVolumeClaim diff --git a/jenkins-03-deployment.yaml b/jenkins-03-deployment.yaml index 87e95d5..f200769 100644 --- a/jenkins-03-deployment.yaml +++ b/jenkins-03-deployment.yaml @@ -19,7 +19,8 @@ spec: serviceAccountName: jenkins-admin containers: - name: jenkins - image: jenkins/jenkins:lts + # image: jenkins/jenkins:lts + image: $REGISTRY/jenkins-docker:$IMG_VERSION # OPTIONAL: check for new floating-tag LTS releases whenever the pod is restarted: imagePullPolicy: Always resources: @@ -53,6 +54,8 @@ spec: volumeMounts: - name: jenkins-data mountPath: /var/jenkins_home + imagePullSecrets: + - name: myregistrykey volumes: - name: jenkins-data persistentVolumeClaim: diff --git a/reg-secret.yaml b/reg-secret.yaml new file mode 100644 index 0000000..e0640e5 --- /dev/null +++ b/reg-secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: myregistrykey + namespace: devops-tools +data: + .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJyZWdpc3RyeS5yZXltb3RhLmVzIjogewoJCQkiYXV0aCI6ICJZM0psZVd4dmNHVjZPbEpsZVMweE1UYzIiCgkJfQoJfQp9 +type: kubernetes.io/dockerconfigjson