72 Commits

Author SHA1 Message Date
dedd162bb5 Automatyczna zmiana: 1752168984 2025-07-10 19:36:24 +02:00
d273a4254f Automatyczna zmiana: 1752168860 2025-07-10 19:34:20 +02:00
2ddee5ddbb Automatyczna zmiana: 1752168728 2025-07-10 19:32:08 +02:00
033493b3f5 Automatyczna zmiana: 1752168604 2025-07-10 19:30:04 +02:00
039c9df549 Automatyczna zmiana: 1752168476 2025-07-10 19:27:56 +02:00
65992ecc75 Automatyczna zmiana: 1752168352 2025-07-10 19:25:52 +02:00
0347431341 Automatyczna zmiana: 1752168235 2025-07-10 19:23:55 +02:00
696d4557ab Automatyczna zmiana: 1752168113 2025-07-10 19:21:53 +02:00
d07f41ece6 Automatyczna zmiana: 1752167993 2025-07-10 19:19:53 +02:00
c2bc6761c3 Automatyczna zmiana: 1752167873 2025-07-10 19:17:53 +02:00
76383b030b Automatyczna zmiana: 1752167754 2025-07-10 19:15:54 +02:00
17ca39e4b0 Automatyczna zmiana: 1752167631 2025-07-10 19:13:51 +02:00
d04b88c6b8 Automatyczna zmiana: 1752167502 2025-07-10 19:11:42 +02:00
9a746322f9 Automatyczna zmiana: 1752167383 2025-07-10 19:09:43 +02:00
22bb43f63f Automatyczna zmiana: 1752167268 2025-07-10 19:07:48 +02:00
97716abc4c Automatyczna zmiana: 1752167129 2025-07-10 19:05:29 +02:00
501c9cc7c7 Automatyczna zmiana: 1752166998 2025-07-10 19:03:18 +02:00
b02c240e5b Automatyczna zmiana: 1752166872 2025-07-10 19:01:12 +02:00
d3cc1f6ff9 Automatyczna zmiana: 1752166750 2025-07-10 18:59:10 +02:00
ab75cec74a Automatyczna zmiana: 1752166465 2025-07-10 18:54:25 +02:00
36e7486726 Automatyczna zmiana: 1752093110 2025-07-09 22:31:50 +02:00
050916003f Automatyczna zmiana: 1752092853 2025-07-09 22:27:33 +02:00
6da6ea634e Automatyczna zmiana: 1752092595 2025-07-09 22:23:15 +02:00
3fadc63726 Automatyczna zmiana: 1752091222 2025-07-09 22:00:22 +02:00
d7da79d1d2 Automatyczna zmiana: 1752091083 2025-07-09 21:58:03 +02:00
4fbb54f446 Automatyczna zmiana: 1752090936 2025-07-09 21:55:36 +02:00
7034bf3dce Automatyczna zmiana: 1752090792 2025-07-09 21:53:12 +02:00
9ac5ca85bd Automatyczna zmiana: 1752090642 2025-07-09 21:50:42 +02:00
a514f374ed Automatyczna zmiana: 1752090505 2025-07-09 21:48:25 +02:00
5041f290fa Automatyczna zmiana: 1752090352 2025-07-09 21:45:52 +02:00
f364694af8 Automatyczna zmiana: 1752090205 2025-07-09 21:43:25 +02:00
d20a83431b Automatyczna zmiana: 1752090065 2025-07-09 21:41:05 +02:00
f845f5d7c2 Automatyczna zmiana: 1752089917 2025-07-09 21:38:37 +02:00
44ad02e6ae Automatyczna zmiana: 1752089436 2025-07-09 21:30:36 +02:00
745e9b5bac Automatyczna zmiana: 1752089288 2025-07-09 21:28:08 +02:00
225f998a8c Automatyczna zmiana: 1752088919 2025-07-09 21:21:59 +02:00
84c57feb84 Automatyczna zmiana: 1752088738 2025-07-09 21:18:58 +02:00
de405308bb Automatyczna zmiana: 1752088584 2025-07-09 21:16:24 +02:00
9c2848df4a Automatyczna zmiana: 1752088408 2025-07-09 21:13:28 +02:00
a7c6051995 Automatyczna zmiana: 1752088132 2025-07-09 21:08:52 +02:00
cbd6be779c Automatyczna zmiana: 1752087761 2025-07-09 21:02:41 +02:00
32e993da4d Automatyczna zmiana: 1752087570 2025-07-09 20:59:30 +02:00
32b9580a82 Automatyczna zmiana: 1752087363 2025-07-09 20:56:03 +02:00
abeb0e5271 Added script to trigger and measure deployment time 2025-07-09 20:50:42 +02:00
b7920e3644 Added build args to Dockerfile 2025-07-08 21:41:54 +02:00
e573c573bf Added build args 2025-07-08 21:31:02 +02:00
23814bef0c Moved clone command to sshagent block 2025-07-08 19:44:23 +02:00
49f19dabe6 Added saving known_hosts to file 2025-07-08 19:03:23 +02:00
1de32691c6 Corrected git remote command 2025-07-04 23:46:57 +02:00
f05d3940fa Modified git repo url to auth 2025-07-04 23:35:51 +02:00
023daf1d4b Added git clone and git push with credentials 2025-07-04 23:33:28 +02:00
e91273888a Changed command run for git container 2025-07-04 22:59:51 +02:00
247798abc8 Implemented auto commit new app version to GitOps by pipeline 2025-07-04 22:42:51 +02:00
600b5aeba8 Merge branch 'dev' into jenkins-pipeline 2025-07-03 23:36:31 +02:00
a79ae2d50f Apply new features from branch 'dev' into jenkins-pipeline 2025-06-12 18:42:28 +00:00
d9fe927832 Removed deprecated label option from pipeline 2025-06-11 17:51:55 +00:00
99cfdfddd0 Added annotation required to run Sysbox on pod 2025-06-11 16:52:16 +00:00
f579e440f8 Updated path to pod template yaml file 2025-06-11 16:43:22 +00:00
ba69728c81 Changed pod runtime to sysbox 2025-06-11 16:32:12 +00:00
5366e313c5 Moved Jenkinsfile and pod agent template to separate directory 2025-06-11 16:29:03 +00:00
283be1a1ec Deleted Goss 2025-06-11 16:28:08 +00:00
1b7204c2ba Changed name of variable to store ACR name instead of ACR username 2025-06-10 20:17:25 +00:00
8f9aed299d Added managed identity client id 2025-06-10 19:32:40 +00:00
6522977280 Changed basic auth to managed identity 2025-06-10 18:50:37 +00:00
c707974a2e Corrected agent declaration in Jenkinsfile 2025-06-08 16:56:35 +00:00
cc2f224d60 Moved pod agent code from Jenkins master to YAML file in repo 2025-06-08 16:45:05 +00:00
b14e6cf873 Restored dind container usage 2025-06-07 21:44:24 +00:00
87e3c0df80 Removed Goss tests 2025-06-07 21:14:40 +00:00
aea09a6081 Added bash installation 2025-06-07 15:08:58 +00:00
d05cede409 The command curl is replaced with wget 2025-06-07 15:06:19 +00:00
17162027b6 Removed unnecessary post cleanup 2025-06-07 14:57:35 +00:00
8887f1b2bd Updated Jenkins pipeline to use in Kubernetes 2025-06-07 13:31:03 +00:00
5 changed files with 156 additions and 85 deletions

93
.jenkins/Jenkinsfile vendored Normal file
View 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 jenkins-kubernetes'
}
}
dir('user-microservice-deploy') {
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 jenkins-kubernetes
'''
}
}
}
}
}
}
}

60
.jenkins/podTemplate.yaml Normal file
View 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: {}

View File

@ -1,71 +0,0 @@
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

@ -36,30 +36,19 @@ 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] 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
# Nadpisujemy TYLKO linię z licznikiem
printf "\r[WAIT] Czekam... %ds" "$WAITED"
echo "[WAIT] Czekam... ($NEW_VERSION)"
fi
done
# Żeby kursor przeszedł do nowej linii po zakończeniu
echo ""

View File

@ -1 +1 @@
1753736103
1752168984