Compare commits
	
		
			74 Commits
		
	
	
		
			dev
			...
			c37d92a4cf
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c37d92a4cf | ||
| 
						 | 
					d8617d01eb | ||
| 
						 | 
					dedd162bb5 | ||
| 
						 | 
					d273a4254f | ||
| 
						 | 
					2ddee5ddbb | ||
| 
						 | 
					033493b3f5 | ||
| 
						 | 
					039c9df549 | ||
| 
						 | 
					65992ecc75 | ||
| 
						 | 
					0347431341 | ||
| 
						 | 
					696d4557ab | ||
| 
						 | 
					d07f41ece6 | ||
| 
						 | 
					c2bc6761c3 | ||
| 
						 | 
					76383b030b | ||
| 
						 | 
					17ca39e4b0 | ||
| 
						 | 
					d04b88c6b8 | ||
| 
						 | 
					9a746322f9 | ||
| 
						 | 
					22bb43f63f | ||
| 
						 | 
					97716abc4c | ||
| 
						 | 
					501c9cc7c7 | ||
| 
						 | 
					b02c240e5b | ||
| 
						 | 
					d3cc1f6ff9 | ||
| 
						 | 
					ab75cec74a | ||
| 
						 | 
					36e7486726 | ||
| 
						 | 
					050916003f | ||
| 
						 | 
					6da6ea634e | ||
| 
						 | 
					3fadc63726 | ||
| 
						 | 
					d7da79d1d2 | ||
| 
						 | 
					4fbb54f446 | ||
| 
						 | 
					7034bf3dce | ||
| 
						 | 
					9ac5ca85bd | ||
| 
						 | 
					a514f374ed | ||
| 
						 | 
					5041f290fa | ||
| 
						 | 
					f364694af8 | ||
| 
						 | 
					d20a83431b | ||
| 
						 | 
					f845f5d7c2 | ||
| 
						 | 
					44ad02e6ae | ||
| 
						 | 
					745e9b5bac | ||
| 
						 | 
					225f998a8c | ||
| 
						 | 
					84c57feb84 | ||
| 
						 | 
					de405308bb | ||
| 
						 | 
					9c2848df4a | ||
| 
						 | 
					a7c6051995 | ||
| 
						 | 
					cbd6be779c | ||
| 
						 | 
					32e993da4d | ||
| 
						 | 
					32b9580a82 | ||
| 
						 | 
					abeb0e5271 | ||
| 
						 | 
					b7920e3644 | ||
| 
						 | 
					e573c573bf | ||
| 
						 | 
					23814bef0c | ||
| 
						 | 
					49f19dabe6 | ||
| 
						 | 
					1de32691c6 | ||
| 
						 | 
					f05d3940fa | ||
| 
						 | 
					023daf1d4b | ||
| 
						 | 
					e91273888a | ||
| 
						 | 
					247798abc8 | ||
| 
						 | 
					600b5aeba8 | ||
| 
						 | 
					a79ae2d50f | ||
| 
						 | 
					d9fe927832 | ||
| 
						 | 
					99cfdfddd0 | ||
| 
						 | 
					f579e440f8 | ||
| 
						 | 
					ba69728c81 | ||
| 
						 | 
					5366e313c5 | ||
| 
						 | 
					283be1a1ec | ||
| 
						 | 
					1b7204c2ba | ||
| 
						 | 
					8f9aed299d | ||
| 
						 | 
					6522977280 | ||
| 
						 | 
					c707974a2e | ||
| 
						 | 
					cc2f224d60 | ||
| 
						 | 
					b14e6cf873 | ||
| 
						 | 
					87e3c0df80 | ||
| 
						 | 
					aea09a6081 | ||
| 
						 | 
					d05cede409 | ||
| 
						 | 
					17162027b6 | ||
| 
						 | 
					8887f1b2bd | 
							
								
								
									
										93
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
pipeline {
 | 
			
		||||
    agent {
 | 
			
		||||
        kubernetes {
 | 
			
		||||
            yamlFile '.jenkins/podTemplate.yaml'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    environment {
 | 
			
		||||
        ACR_NAME = 'marcin00'
 | 
			
		||||
        CLIENT_ID = 'c302726f-fafb-4143-94c1-67a70975574a'
 | 
			
		||||
        DOCKER_REGISTRY_URL = 'marcin00.azurecr.io'
 | 
			
		||||
        DOCKER_IMAGE = "${DOCKER_REGISTRY_URL}/user-microservice:${GIT_COMMIT}"
 | 
			
		||||
        DEPLOY_REPO = 'ssh://git@srv22.mikr.us:20343/pikram/user-microservice-deploy.git'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    stages {
 | 
			
		||||
        stage('Code Tests') {
 | 
			
		||||
            steps {
 | 
			
		||||
                container('python') {
 | 
			
		||||
                    dir('api') {
 | 
			
		||||
                        sh '''
 | 
			
		||||
                            python3 -m venv env
 | 
			
		||||
                            source env/bin/activate
 | 
			
		||||
                            pip install -r requirements.txt pytest
 | 
			
		||||
                            python3 -m pytest --junit-xml=pytest_junit.xml
 | 
			
		||||
                        '''
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            post {
 | 
			
		||||
                always {
 | 
			
		||||
                    junit testResults: '**/*pytest_junit.xml'
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        stage('Build & Push Docker') {
 | 
			
		||||
            steps {
 | 
			
		||||
                container('docker') {
 | 
			
		||||
                    sh '''
 | 
			
		||||
                        docker build -t ${DOCKER_IMAGE} --build-arg APP_VERSION=${GIT_COMMIT} --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") .
 | 
			
		||||
                        az login --identity --client-id ${CLIENT_ID}
 | 
			
		||||
                        az acr login --name ${ACR_NAME}
 | 
			
		||||
                        docker push ${DOCKER_IMAGE}
 | 
			
		||||
                    '''
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        stage('Commit new version to GitOps repo') {
 | 
			
		||||
            steps {
 | 
			
		||||
                container('git') {
 | 
			
		||||
                    withCredentials([string(credentialsId: 'gitea-known-host', variable: 'GITEA_KNOWN_HOST')]) {
 | 
			
		||||
                        sh '''
 | 
			
		||||
                            mkdir -p ~/.ssh
 | 
			
		||||
                            echo "$GITEA_KNOWN_HOST" >> ~/.ssh/known_hosts
 | 
			
		||||
                            chmod 644 ~/.ssh/known_hosts
 | 
			
		||||
 | 
			
		||||
                            git config --global user.name "jenkins[bot]"
 | 
			
		||||
                            git config --global user.email "jenkins@marcin00.pl"
 | 
			
		||||
                        '''
 | 
			
		||||
                        sshagent(['gitea-deploy-key']) {
 | 
			
		||||
                            sh 'git clone ${DEPLOY_REPO} --branch fluxcd'
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    dir('user-microservice-deploy/apps/user-microservice') {
 | 
			
		||||
                        sh '''
 | 
			
		||||
                            # Podmień tag obrazu w pliku deploy.yaml
 | 
			
		||||
                            awk -v commit="$GIT_COMMIT" '
 | 
			
		||||
                            $0 ~ /name:[[:space:]]*api/ { in_api_container = 1; print; next }
 | 
			
		||||
                            in_api_container && $0 ~ /^[[:space:]]*image:[[:space:]]*/ {
 | 
			
		||||
                                sub(/:[^:[:space:]]+$/, ":" commit)
 | 
			
		||||
                                in_api_container = 0
 | 
			
		||||
                                print
 | 
			
		||||
                                next
 | 
			
		||||
                            }
 | 
			
		||||
                            { print }
 | 
			
		||||
                            ' deploy.yaml > deploy.tmp && mv deploy.tmp deploy.yaml
 | 
			
		||||
                        '''
 | 
			
		||||
 | 
			
		||||
                        sshagent(['gitea-deploy-key']) {
 | 
			
		||||
                            sh '''
 | 
			
		||||
                                git add deploy.yaml
 | 
			
		||||
                                git diff-index --quiet HEAD || git commit -m "JENKINS: Changed deployed version to $GIT_COMMIT"
 | 
			
		||||
                                git push origin fluxcd
 | 
			
		||||
                            '''
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										60
									
								
								.jenkins/podTemplate.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.jenkins/podTemplate.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Pod
 | 
			
		||||
metadata:
 | 
			
		||||
  annotations:
 | 
			
		||||
    io.kubernetes.cri-o.userns-mode: "auto:size=65536"
 | 
			
		||||
  labels:
 | 
			
		||||
    jenkins: "slave"
 | 
			
		||||
    jenkins/label: "kubernetes-agent"
 | 
			
		||||
spec:
 | 
			
		||||
  runtimeClassName: sysbox-runc
 | 
			
		||||
  containers:
 | 
			
		||||
    - name: jnlp
 | 
			
		||||
      image: jenkins/inbound-agent:alpine
 | 
			
		||||
      tty: false
 | 
			
		||||
      workingDir: /home/jenkins/agent
 | 
			
		||||
      volumeMounts:
 | 
			
		||||
        - name: workspace-volume
 | 
			
		||||
          mountPath: /home/jenkins/agent
 | 
			
		||||
      env:
 | 
			
		||||
        - name: JENKINS_WEB_SOCKET
 | 
			
		||||
          value: "true"
 | 
			
		||||
        - name: REMOTING_OPTS
 | 
			
		||||
          value: "-noReconnectAfter 1d"
 | 
			
		||||
 | 
			
		||||
    - name: python
 | 
			
		||||
      image: python:3.11.7-alpine
 | 
			
		||||
      command:
 | 
			
		||||
        - cat
 | 
			
		||||
      tty: true
 | 
			
		||||
      workingDir: /home/jenkins/agent
 | 
			
		||||
      volumeMounts:
 | 
			
		||||
        - name: workspace-volume
 | 
			
		||||
          mountPath: /home/jenkins/agent
 | 
			
		||||
 | 
			
		||||
    - name: docker
 | 
			
		||||
      image: marcin00.azurecr.io/azure-cli-docker:slim-bookworm
 | 
			
		||||
      tty: true
 | 
			
		||||
      workingDir: /home/jenkins/agent
 | 
			
		||||
      volumeMounts:
 | 
			
		||||
        - name: workspace-volume
 | 
			
		||||
          mountPath: /home/jenkins/agent
 | 
			
		||||
 | 
			
		||||
    - name: git
 | 
			
		||||
      image: alpine/git:latest
 | 
			
		||||
      command:
 | 
			
		||||
        - cat
 | 
			
		||||
      tty: true
 | 
			
		||||
      workingDir: /home/jenkins/agent
 | 
			
		||||
      volumeMounts:
 | 
			
		||||
        - name: workspace-volume
 | 
			
		||||
          mountPath: /home/jenkins/agent
 | 
			
		||||
 | 
			
		||||
  nodeSelector:
 | 
			
		||||
    kubernetes.io/os: linux
 | 
			
		||||
 | 
			
		||||
  restartPolicy: Never
 | 
			
		||||
 | 
			
		||||
  volumes:
 | 
			
		||||
    - name: workspace-volume
 | 
			
		||||
      emptyDir: {}
 | 
			
		||||
@@ -1,67 +0,0 @@
 | 
			
		||||
import matplotlib.pyplot as plt # type: ignore
 | 
			
		||||
import os
 | 
			
		||||
import statistics
 | 
			
		||||
 | 
			
		||||
# Dane
 | 
			
		||||
data = {
 | 
			
		||||
    'Jenkins + Jenkins': (165, 158, 217, 164, 136, 135, 147, 145, 138, 134, 137, 129, 136, 142, 125, 138, 133, 136, 128, 131),
 | 
			
		||||
    'Jenkins + ArgoCD': (181, 111, 115, 121, 128, 105, 108, 119, 112, 109, 110, 108, 111, 106, 113, 117, 113, 120, 113, 107),
 | 
			
		||||
    'Jenkins + FluxCD' : (167, 119, 113, 110, 102, 126, 111, 113, 118, 106, 111, 104, 101, 105, 104, 106, 102, 105, 107, 103),
 | 
			
		||||
    'Woodpecker + Woodpecker': (340, 348, 334, 363, 350, 339, 331, 354, 357, 351, 356, 347, 354, 341, 357, 352, 368, 336, 331, 340),
 | 
			
		||||
    'Woodpecker + ArgoCD': (355, 360, 354, 344, 318, 353, 328, 305, 331, 324, 328, 349, 337, 328, 349, 350, 344, 344, 344, 341),
 | 
			
		||||
    'Woodpecker + FluxCD' : (326, 344, 325, 337, 343, 358, 339, 341, 335, 354, 342, 355, 345, 334, 356, 346, 338, 342, 330, 333),
 | 
			
		||||
    'Argo Workflows + Argo-Workflows': (190, 190, 169, 211, 172, 198, 207, 192, 212, 181, 168, 199, 216, 213, 220, 209, 192, 210, 196, 165),
 | 
			
		||||
    'Argo Workflows + ArgoCD': (145, 159, 163, 148, 169, 185, 153, 148, 139, 176, 133, 140, 161, 135, 161, 130, 139, 164, 183, 183),
 | 
			
		||||
    'Argo Workflows + FluxCD': (161, 136, 181, 157, 141, 139, 157, 149, 151, 139, 139, 148, 152, 142, 136, 149, 160, 145, 173, 161)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Wyliczenie średnich
 | 
			
		||||
labels = list(data.keys())
 | 
			
		||||
means = [statistics.mean(data[k]) for k in labels]
 | 
			
		||||
 | 
			
		||||
# Grupy indeksów do porównań
 | 
			
		||||
groupings = [
 | 
			
		||||
    [0, 1, 2],
 | 
			
		||||
    [3, 4, 5],
 | 
			
		||||
    [6, 7, 8],
 | 
			
		||||
    [0, 3, 6],
 | 
			
		||||
    [1, 4, 7],
 | 
			
		||||
    [2, 5, 8]
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# Kolory z palety 'tab10'
 | 
			
		||||
color_palette = plt.get_cmap('tab10')
 | 
			
		||||
 | 
			
		||||
# Folder wyjściowy
 | 
			
		||||
output_folder = "plots"
 | 
			
		||||
os.makedirs(output_folder, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
# Generowanie wykresów
 | 
			
		||||
for i, group in enumerate(groupings):
 | 
			
		||||
    group_labels = [labels[j] for j in group]
 | 
			
		||||
    group_means = [means[j] for j in group]
 | 
			
		||||
    colors = [color_palette(j % 10) for j in group]  # różne kolory
 | 
			
		||||
 | 
			
		||||
    plt.figure()
 | 
			
		||||
    bars = plt.bar(group_labels, group_means, color=colors)
 | 
			
		||||
 | 
			
		||||
    # Oblicz maksymalną wartość, by zwiększyć wysokość osi Y
 | 
			
		||||
    max_val = max(group_means)
 | 
			
		||||
    plt.ylim(0, max_val * 1.15)  # dodaj 15% zapasu na tekst
 | 
			
		||||
 | 
			
		||||
    plt.ylabel("Średni czas wdrożenia (sek)")
 | 
			
		||||
    plt.title(f"Porównanie średnich czasów wdrożenia")
 | 
			
		||||
    plt.xticks(rotation=45)
 | 
			
		||||
 | 
			
		||||
    # Dodanie wartości nad słupkami
 | 
			
		||||
    for bar in bars:
 | 
			
		||||
        yval = bar.get_height()
 | 
			
		||||
        label = f'{yval:.1f}'.replace('.', ',')  # <-- tutaj zamiana kropki na przecinek
 | 
			
		||||
        plt.text(bar.get_x() + bar.get_width()/2.0, yval + max_val * 0.02, label,
 | 
			
		||||
                ha='center', va='bottom', fontsize=9)
 | 
			
		||||
 | 
			
		||||
    plt.tight_layout()
 | 
			
		||||
    plt.savefig(f"{output_folder}/mean_times_{i}.png")
 | 
			
		||||
    plt.close()
 | 
			
		||||
 | 
			
		||||
print("Wszystkie wykresy wygenerowane z dodatkowymi marginesami!")
 | 
			
		||||
@@ -36,19 +36,30 @@ fi
 | 
			
		||||
echo "[INFO] Oczekiwanie na wdrożenie nowej wersji..."
 | 
			
		||||
 | 
			
		||||
# === Odpytywanie endpointa /version ===
 | 
			
		||||
WAITED=0
 | 
			
		||||
echo "[WAIT] Oczekiwanie na nową wersję..."
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
  sleep $CHECK_INTERVAL
 | 
			
		||||
  WAITED=$((WAITED + CHECK_INTERVAL))
 | 
			
		||||
 | 
			
		||||
  NEW_VERSION=$(curl -s "$APP_URL" | jq -r '.version')
 | 
			
		||||
 | 
			
		||||
  if [[ "$NEW_VERSION" != "$OLD_VERSION" ]]; then
 | 
			
		||||
    END_TIME=$(date +%s)
 | 
			
		||||
    DURATION=$((END_TIME - START_TIME))
 | 
			
		||||
    echo "[INFO] Nowa wersja wdrożona: $NEW_VERSION"
 | 
			
		||||
 | 
			
		||||
    # Nadpisujemy linię z licznikiem
 | 
			
		||||
    printf "\r[INFO] Nowa wersja wdrożona po %ds: %s\n" "$WAITED" "$NEW_VERSION"
 | 
			
		||||
    echo "[INFO] Czas wdrożenia: $DURATION sekund"
 | 
			
		||||
 | 
			
		||||
    echo "$START_TIME,$END_TIME,$DURATION,$OLD_VERSION,$NEW_VERSION" >> "$OUTPUT_FILE"
 | 
			
		||||
    break
 | 
			
		||||
  else
 | 
			
		||||
    echo "[WAIT] Czekam... ($NEW_VERSION)"
 | 
			
		||||
    # Nadpisujemy TYLKO linię z licznikiem
 | 
			
		||||
    printf "\r[WAIT] Czekam... %ds" "$WAITED"
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Żeby kursor przeszedł do nowej linii po zakończeniu
 | 
			
		||||
echo ""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								version_marker.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								version_marker.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
1752168984
 | 
			
		||||
		Reference in New Issue
	
	Block a user