38 Commits

Author SHA1 Message Date
b887fd46b0 Automatyczna zmiana: 1753626456 2025-07-27 16:32:56 +02:00
abf126f31e Automatyczna zmiana: 1753625912 2025-07-27 16:31:17 +02:00
0d6a52d2f9 Automatyczna zmiana: 1753625345 2025-07-27 16:09:10 +02:00
e080594dcb Automatyczna zmiana: 1753624962 2025-07-27 16:03:26 +02:00
6a11df64b0 Automatyczna zmiana: 1753624408 2025-07-27 15:53:34 +02:00
fe9a68023a Automatyczna zmiana: 1753624006 2025-07-27 15:46:56 +02:00
80210e67ea Automatyczna zmiana: 1753623624 2025-07-27 15:40:34 +02:00
300adef0f9 Updated path in repo 2025-07-27 14:56:59 +02:00
492df7e45c Changed deploy repo branch 2025-07-27 14:48:25 +02:00
af829bc5bb Added overwrite output lines during waiting
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-07-26 16:47:54 +02:00
66e2a0e3b9 Merge branch 'dev' into woodpecker
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-07-26 16:35:10 +02:00
6bfcbb1c96 Automatyczna zmiana: 1753539316
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-07-26 16:15:16 +02:00
7072671564 Added dockerd command
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-07-22 19:36:56 +02:00
a2c2e39a1b Corrected commands variables expansion
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-07-22 19:30:03 +02:00
55eeec730d Added userns-mode annotation
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-07-21 15:39:06 +02:00
e6c9675abc Added sysbox as runtimeClass
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-07-20 11:15:32 +02:00
ebf713f75f Removed Goss from pipeline; added GitOps commit 2025-07-20 11:01:12 +02:00
13f098fc7c Removed Goss 2025-07-20 10:02:27 +02:00
8cf8a92f8d Removed Jenkinsfile 2025-07-20 10:01:57 +02:00
571a45d3de Added script to trigger and measure deployment time 2025-07-20 10:00:29 +02:00
560090319a Added build args to Dockerfile 2025-07-20 09:59:53 +02:00
e6c68f839a Added script to trigger and measure deployment time 2025-07-20 09:54:38 +02:00
fcb93a5cf8 Added build args to Dockerfile 2025-07-20 09:54:31 +02:00
cefb8eba4d Added missing dgoss installation
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-05-25 20:09:14 +00:00
1e54ba614a Corrected output path for dgoss command
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 20:05:49 +00:00
7469609600 Removed redundant quote around dgoss command
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 20:01:31 +00:00
b7a1fcfe49 Added double quotes around dgoss run command 2025-05-25 20:00:13 +00:00
a9743ecfbe Restored old procedure for Goss tests 2025-05-25 19:59:21 +00:00
76f33f50f5 Extended time to dockerd start
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 19:54:30 +00:00
203a81573d Added dockerd start in the background
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 19:43:19 +00:00
383e906102 Corrected image name
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 19:36:16 +00:00
e7330f07ee Returned to privileged mode
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 19:34:22 +00:00
c996be5953 Modified building step 2025-05-25 17:44:17 +00:00
bf60011948 Added double quotes around command to run Dgoss 2025-05-25 17:17:11 +00:00
82d5962020 Added steps to build, test and push docker image 2025-05-25 17:14:18 +00:00
1254b036f5 Added cd to api directory
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2025-05-25 16:54:15 +00:00
6d84bf694e Added python tests to Woodpecker Workflow
Some checks failed
ci/woodpecker/push/build Pipeline failed
2025-05-25 16:43:44 +00:00
c2df9d136e Test first Woodpecker workflow
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
2025-05-25 16:19:25 +00:00
4 changed files with 149 additions and 0 deletions

71
.woodpecker/build.yaml Normal file
View File

@ -0,0 +1,71 @@
when:
- event: [push, manual]
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-and-push
image: marcin00.azurecr.io/azure-cli-docker:slim-bookworm
environment:
ACR_NAME: marcin00
CLIENT_ID: c302726f-fafb-4143-94c1-67a70975574a
commands:
- dockerd &
- export DOCKER_IMAGE=marcin00.azurecr.io/user-microservice:${CI_COMMIT_SHA}
- docker build -t $DOCKER_IMAGE --build-arg APP_VERSION=${CI_COMMIT_SHA} --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
backend_options:
kubernetes:
annotations:
io.kubernetes.cri-o.userns-mode: "auto:size=65536"
runtimeClassName: sysbox-runc
- name: gitops-commit
image: alpine/git
environment:
DEPLOY_REPO_URL: ssh://git@srv22.mikr.us:20343/pikram/user-microservice-deploy.git
DEPLOY_REPO_BRANCH: woodpecker-fluxcd-deploy
GITEA_DEPLOY_KEY:
from_secret: gitea-deploy-key
GITEA_KNOWN_HOST:
from_secret: gitea-known-host
commands:
- mkdir -p ~/.ssh
- echo "$GITEA_KNOWN_HOST" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- echo "$GITEA_DEPLOY_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- git config --global user.name "woodpecker[bot]"
- git config --global user.email "woodpecker@marcin00.pl"
- git clone $DEPLOY_REPO_URL --branch $DEPLOY_REPO_BRANCH
- cd user-microservice-deploy/apps/user-microservice
- |
awk -v commit="$CI_COMMIT_SHA" '
$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
- git add deploy.yaml
- 'git diff-index --quiet HEAD || git commit -m "WOODPECKER: Changed deployed version to $CI_COMMIT_SHA"'
- git push origin $DEPLOY_REPO_BRANCH

View File

@ -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

65
deployment_timer.sh Executable file
View File

@ -0,0 +1,65 @@
#!/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 ===
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))
# 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
# 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
View File

@ -0,0 +1 @@
1753626456