18 Commits

Author SHA1 Message Date
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
3 changed files with 99 additions and 8 deletions

49
.jenkins/Jenkinsfile vendored Normal file
View File

@ -0,0 +1,49 @@
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}"
}
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} .
az login --identity --client-id ${CLIENT_ID}
az acr login --name ${ACR_NAME}
docker push ${DOCKER_IMAGE}
'''
}
}
}
}
}

50
.jenkins/podTemplate.yaml Normal file
View File

@ -0,0 +1,50 @@
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
nodeSelector:
kubernetes.io/os: linux
restartPolicy: Never
volumes:
- name: workspace-volume
emptyDir: {}

View File

@ -2,7 +2,6 @@ from flask import Blueprint, jsonify, request, abort
from flask_jwt_extended import create_access_token, set_access_cookies, jwt_required, \
verify_jwt_in_request, get_jwt_identity, unset_jwt_cookies, get_jwt
from models import db, RevokedToken, User
import os
from utils import admin_required, validate_access, get_user_or_404
from werkzeug.security import check_password_hash, generate_password_hash
@ -111,10 +110,3 @@ def user_logout():
response = jsonify({"msg": "User logged out successfully."})
unset_jwt_cookies(response)
return response
@user_bp.route('/version', methods=['GET'])
def version():
return jsonify({
"version": os.getenv("APP_VERSION", "unknown"),
"build_time": os.getenv("BUILD_DATE", "unknown")
})