Compare commits
17 Commits
dev
...
571a45d3de
Author | SHA1 | Date | |
---|---|---|---|
571a45d3de | |||
560090319a | |||
cefb8eba4d | |||
1e54ba614a | |||
7469609600 | |||
b7a1fcfe49 | |||
a9743ecfbe | |||
76f33f50f5 | |||
203a81573d | |||
383e906102 | |||
e7330f07ee | |||
c996be5953 | |||
bf60011948 | |||
82d5962020 | |||
1254b036f5 | |||
6d84bf694e | |||
c2df9d136e |
49
.woodpecker/build.yaml
Normal file
49
.woodpecker/build.yaml
Normal file
@ -0,0 +1,49 @@
|
||||
when:
|
||||
- event: push
|
||||
branch: woodpecker
|
||||
|
||||
steps:
|
||||
- name: code-tests
|
||||
image: python:3.11.7-alpine
|
||||
commands:
|
||||
- cd api
|
||||
- python3 -m venv env
|
||||
- source env/bin/activate
|
||||
- pip install -r requirements.txt pytest
|
||||
- python3 -m pytest --junit-xml=pytest_junit.xml
|
||||
|
||||
- name: build
|
||||
image: docker:dind
|
||||
privileged: true
|
||||
environment:
|
||||
ACR_USERNAME: marcin00
|
||||
ACR_PASSWORD:
|
||||
from_secret: acr_password
|
||||
commands:
|
||||
- dockerd-entrypoint.sh &
|
||||
- sleep 10 # czas na uruchomienie usługi Docker
|
||||
|
||||
- DOCKER_IMAGE=marcin00.azurecr.io/user-microservice:$CI_COMMIT_SHA
|
||||
|
||||
- echo "===> Building Docker image"
|
||||
- docker build -t $DOCKER_IMAGE .
|
||||
|
||||
- echo "===> Installing bash"
|
||||
- apk add --no-cache bash
|
||||
|
||||
- echo "===> Installing goss"
|
||||
- wget https://github.com/aelsabbahy/goss/releases/latest/download/goss-linux-amd64 -O goss
|
||||
- wget https://github.com/aelsabbahy/goss/releases/latest/download/dgoss -O dgoss
|
||||
- chmod +x *goss
|
||||
|
||||
- echo "===> Starting container for test"
|
||||
- export GOSS_OPTS="-f junit"
|
||||
- export GOSS_PATH=./goss
|
||||
- export GOSS_SLEEP=3
|
||||
- "./dgoss run -e SQLALCHEMY_DATABASE_URI=sqlite:///:memory: $DOCKER_IMAGE > goss_junit.xml"
|
||||
|
||||
- echo "===> Logging in to ACR"
|
||||
- echo "$ACR_PASSWORD" | docker login marcin00.azurecr.io -u $ACR_USERNAME --password-stdin
|
||||
|
||||
- echo "===> Pushing image to ACR"
|
||||
- docker push $DOCKER_IMAGE
|
15
Dockerfile
15
Dockerfile
@ -1,5 +1,18 @@
|
||||
FROM python:3.11.7-slim-bookworm
|
||||
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
|
||||
|
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