Merge remote-tracking branch 'refs/remotes/origin/main'

This commit is contained in:
2025-05-22 11:23:24 +03:00

336
Jenkinsfile vendored
View File

@@ -1,173 +1,163 @@
pipeline { pipeline {
agent { agent {
kubernetes { kubernetes {
yaml """ yaml """
apiVersion: v1 apiVersion: v1
kind: Pod kind: Pod
metadata: metadata:
name: default name: default
namespace: default namespace: default
labels: labels:
jenkins-server-jenkins-agent: "true" jenkins-server-jenkins-agent: "true"
spec: spec:
containers: containers:
- name: jnlp - name: jnlp
image: jenkins/inbound-agent:3309.v27b_9314fd1a_4-2 image: jenkins/inbound-agent:3309.v27b_9314fd1a_4-2
workingDir: /home/jenkins/agent workingDir: /home/jenkins/agent
env: env:
- name: JENKINS_URL - name: JENKINS_URL
value: "http://jenkins-server.default.svc.cluster.local:8080/" value: "http://jenkins-server.default.svc.cluster.local:8080/"
resources: resources:
requests: requests:
cpu: "512m" cpu: "512m"
memory: "512Mi" memory: "512Mi"
limits: limits:
cpu: "512m" cpu: "512m"
memory: "512Mi" memory: "512Mi"
- name: maven - name: maven
image: maven:latest image: maven:latest
workingDir: /home/jenkins/agent workingDir: /home/jenkins/agent
command: ["/bin/sh", "-c"] command: ["/bin/sh", "-c"]
args: ["sleep 9999999"] args: ["sleep 9999999"]
env: env:
- name: NEXUS_URL - name: NEXUS_URL
value: "http://nexus-repo-nexus-repository-manager.default.svc.cluster.local:8081/repository/my-helm-repo/" value: "http://nexus-repo-nexus-repository-manager.default.svc.cluster.local:8081/repository/my-helm-repo/"
- name: NEXUS_PASS - name: NEXUS_PASS
value: "testpass" value: "testpass"
- name: helm - name: helm
image: alpine/helm:latest image: alpine/helm:latest
workingDir: /home/jenkins/agent workingDir: /home/jenkins/agent
command: ["/bin/sh", "-c"] command: ["/bin/sh", "-c"]
args: ["sleep 9999999"] args: ["sleep 9999999"]
- name: docker - name: docker
image: docker:dind image: docker:dind
workingDir: /home/jenkins/agent workingDir: /home/jenkins/agent
command: ["/bin/sh", "-c"] command: ["/bin/sh", "-c"]
args: ["sleep 9999999"] args: ["sleep 9999999"]
securityContext: securityContext:
privileged: true privileged: true
env: env:
- name: NEXUS_DOCKER_URL - name: NEXUS_DOCKER_URL
value: "nexus-repo-nexus-repository-manager.default.svc.cluster.local:5000" value: "nexus-repo-nexus-repository-manager.default.svc.cluster.local:5000"
- name: NEXUS_DOCKER_PASS - name: NEXUS_DOCKER_PASS
value: "testpass" value: "testpass"
- name: privcon restartPolicy: Never
image: debian:bookworm-slim serviceAccountName: default
workingDir: /home/jenkins/agent volumes:
command: ["/bin/sh", "-c"] - emptyDir: {}
args: ["sleep 9999999"] name: workspace-volume
securityContext: """
privileged: true // inheritFrom 'default'
// defaultContainer 'jnlp'
restartPolicy: Never }
serviceAccountName: default }
volumes: stages{
- emptyDir: {} stage('Get source code') {
name: workspace-volume steps {
""" container('maven') {
// inheritFrom 'default' sh 'git clone https://git.konsthol.eu/konsthol/example-app appsource'
// defaultContainer 'jnlp' }
} }
} }
stages{ stage('Prepare source code') {
stage('Get source code') { steps {
steps { container('maven') {
container('maven') { sh 'mvn io.quarkus.platform:quarkus-maven-plugin:3.22.1:create -DprojectGroupId=com.example -DprojectArtifactId=example-app -DclassName=Example -Dextensions="resteasy-reactive,helm"'
sh 'git clone https://git.konsthol.eu/konsthol/example-app appsource' }
} }
} }
} stage('Make jar') {
stage('Prepare source code') { steps {
steps { container('maven') {
container('maven') { sh 'cd example-app && mvn install -DskipTests'
sh 'mvn io.quarkus.platform:quarkus-maven-plugin:3.22.1:create -DprojectGroupId=com.example -DprojectArtifactId=example-app -DclassName=Example -Dextensions="resteasy-reactive,helm"' }
} }
} }
} stage('Change values.yaml to nexus') {
stage('Make jar') { steps {
steps { container('maven') {
container('maven') { sh 'sed -i "s|docker.io/root/example-app:1.0.0-SNAPSHOT|$NEXUS_URL|g" example-app/target/helm/kubernetes/example-app/values.yaml'
sh 'cd example-app && mvn install -DskipTests' }
} }
} }
} stage('Make chart') {
stage('Change values.yaml to nexus') { steps {
steps { container('helm') {
container('maven') { sh 'cd example-app && helm package target/helm/kubernetes/example-app'
sh 'sed -i "s|docker.io/root/example-app:1.0.0-SNAPSHOT|$NEXUS_URL|g" example-app/target/helm/kubernetes/example-app/values.yaml' }
} }
} }
} stage('Upload chart') {
stage('Make chart') { steps {
steps { container('maven') {
container('helm') { sh 'cd example-app && curl -u admin:$NEXUS_PASS --upload-file example-app-1.0.0-SNAPSHOT.tgz $NEXUS_URL'
sh 'cd example-app && helm package target/helm/kubernetes/example-app' }
} }
} }
} stage('Docker in Docker start') {
stage('Upload chart') { steps {
steps { container('docker') {
container('maven') { sh 'dockerd --insecure-registry http://$NEXUS_DOCKER_URL &'
sh 'cd example-app && curl -u admin:$NEXUS_PASS --upload-file example-app-1.0.0-SNAPSHOT.tgz $NEXUS_URL' }
} }
} }
} stage('Docker build in Docker') {
stage('Docker in Docker start') { steps {
steps { container('docker') {
container('docker') { sh 'docker build -t example-app -f /home/jenkins/agent/workspace/example-pipeline/appsource/Dockerfile example-app/target'
sh 'dockerd --insecure-registry http://$NEXUS_DOCKER_URL &' }
} }
} }
} stage('Docker repo login') {
stage('Docker build in Docker') { steps {
steps { container('docker') {
container('docker') { sh 'docker login http://$NEXUS_DOCKER_URL -u admin -p $NEXUS_DOCKER_PASS'
sh 'docker build -t example-app -f /home/jenkins/agent/workspace/example-pipeline/appsource/Dockerfile example-app/target' }
} }
} }
} stage('Docker image tag') {
stage('Docker repo login') { steps {
steps { container('docker') {
container('docker') { sh 'docker tag example-app $NEXUS_DOCKER_URL/my-docker-repo/example-app:latest'
sh 'docker login http://$NEXUS_DOCKER_URL -u admin -p $NEXUS_DOCKER_PASS' }
} }
} }
} stage('Docker image push') {
stage('Docker image tag') { steps {
steps { container('docker') {
container('docker') { sh 'docker push $NEXUS_DOCKER_URL/my-docker-repo/example-app:latest'
sh 'docker tag example-app $NEXUS_DOCKER_URL/my-docker-repo/example-app:latest' }
} }
} }
} stage('Deploy with Helm') {
stage('Docker image push') { steps {
steps { sh 'kubectl version --client'
container('docker') { // sh 'helm repo add my-helm-repo http://localhost:8081/repository/my-helm-repo/'
sh 'docker push $NEXUS_DOCKER_URL/my-docker-repo/example-app:latest' // sh 'helm repo update'
} //sh 'helm install example-app my-helm-repo/example-app --set port=8090'
} }
} }
stage('Deploy with Helm') { }
steps { post {
container('privcon') { success {
sh 'whoami && ls -la && which helm && pwd' echo 'Build Successful'
} }
// sh 'helm repo add my-helm-repo http://localhost:8081/repository/my-helm-repo/' failure {
// sh 'helm repo update' echo 'Build Failed'
//sh 'helm install example-app my-helm-repo/example-app --set port=8090' }
} }
} }
}
post {
success {
echo 'Build Successful'
}
failure {
echo 'Build Failed'
}
}
}