Compare commits
3 Commits
jenkins-fl
...
72e38fab08
Author | SHA1 | Date | |
---|---|---|---|
72e38fab08 | |||
e6c68f839a | |||
fcb93a5cf8 |
12
Dockerfile
12
Dockerfile
@ -1,6 +1,18 @@
|
||||
FROM python:3.11.7-alpine
|
||||
|
||||
# Wersja i data builda jako build-arg
|
||||
ARG APP_VERSION=unknown
|
||||
ARG BUILD_DATE=unknown
|
||||
|
||||
# Ustawiamy zmienne w ENV, by były dostępne w kontenerze
|
||||
ENV APP_VERSION=$APP_VERSION
|
||||
ENV BUILD_DATE=$BUILD_DATE
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY api .
|
||||
|
||||
RUN apk add --no-cache curl
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
CMD python3 app.py
|
||||
|
50
data_analysis.py
Normal file
50
data_analysis.py
Normal file
@ -0,0 +1,50 @@
|
||||
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]
|
||||
]
|
||||
|
||||
# Folder wyjściowy (opcjonalnie)
|
||||
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]
|
||||
|
||||
plt.figure()
|
||||
plt.bar(group_labels, group_means)
|
||||
plt.ylabel("Średni czas wdrożenia (sek)")
|
||||
plt.title(f"Porównanie średnich czasów wdrożenia")
|
||||
plt.xticks(rotation=45)
|
||||
plt.tight_layout()
|
||||
plt.savefig(f"{output_folder}/mean_times_{i}.png")
|
||||
plt.close()
|
||||
|
||||
print("Wykresy zapisane!")
|
54
deployment_timer.sh
Executable file
54
deployment_timer.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# === KONFIGURACJA ===
|
||||
APP_URL="https://user-microservice.marcin00.pl/version"
|
||||
MARKER_FILE="version_marker.txt"
|
||||
OUTPUT_FILE="deployment_times.csv"
|
||||
CHECK_INTERVAL=1 # sekundy
|
||||
|
||||
# === POBRANIE AKTUALNEJ WERSJI APLIKACJI ===
|
||||
echo "[INFO] Pobieranie aktualnej wersji z /version..."
|
||||
OLD_VERSION=$(curl -s "$APP_URL" | jq -r '.version')
|
||||
|
||||
if [[ -z "$OLD_VERSION" ]]; then
|
||||
echo "[ERROR] Nie udało się pobrać aktualnej wersji aplikacji."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[INFO] Aktualna wersja: $OLD_VERSION"
|
||||
|
||||
# === Modyfikacja pliku, commit i push ===
|
||||
TIMESTAMP=$(date +%s)
|
||||
echo "$TIMESTAMP" > "$MARKER_FILE"
|
||||
|
||||
git add "$MARKER_FILE"
|
||||
git commit -m "Automatyczna zmiana: $TIMESTAMP"
|
||||
START_TIME=$(date +%s)
|
||||
|
||||
echo "[INFO] Wykonuję git push..."
|
||||
git push
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "[ERROR] Push nie powiódł się."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[INFO] Oczekiwanie na wdrożenie nowej wersji..."
|
||||
|
||||
# === Odpytywanie endpointa /version ===
|
||||
while true; do
|
||||
sleep $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"
|
||||
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)"
|
||||
fi
|
||||
done
|
Reference in New Issue
Block a user