Compare commits
	
		
			27 Commits
		
	
	
		
			997282b4f1
			...
			jenkins-de
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c1a800ee84 | ||
| 
						 | 
					d26b6b39a5 | ||
| 
						 | 
					59287c30b7 | ||
| 
						 | 
					f7f06d3943 | ||
| 
						 | 
					105b6e1132 | ||
| 
						 | 
					a95d2dffd7 | ||
| 
						 | 
					89fdbc59f3 | ||
| 
						 | 
					402a26769b | ||
| 
						 | 
					acb0fe1513 | ||
| 
						 | 
					e5dfaaf827 | ||
| 
						 | 
					668d2521c1 | ||
| 
						 | 
					bbc2fd73b6 | ||
| 
						 | 
					a11cc61082 | ||
| 
						 | 
					3c2b308f80 | ||
| 
						 | 
					abe9d34a91 | ||
| 
						 | 
					3016038d8a | ||
| 
						 | 
					7ab2516080 | ||
| 
						 | 
					974576f6c0 | ||
| 
						 | 
					57d3b50a89 | ||
| 
						 | 
					04771de20f | ||
| 
						 | 
					84c1abdf11 | ||
| 
						 | 
					1449d3186c | ||
| 
						 | 
					3012d6c624 | ||
| 
						 | 
					801da6d0df | ||
| 
						 | 
					a76cf0e18c | ||
| 
						 | 
					531144e383 | ||
| 
						 | 
					fe8babda8d | 
							
								
								
									
										32
									
								
								.jenkins/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.jenkins/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					FROM debian:bookworm-slim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Zapobiega interaktywnym promptom
 | 
				
			||||||
 | 
					ENV DEBIAN_FRONTEND=noninteractive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Instalacja zależności systemowych
 | 
				
			||||||
 | 
					RUN apt-get update && apt-get install -y \
 | 
				
			||||||
 | 
					    ca-certificates \
 | 
				
			||||||
 | 
					    curl \
 | 
				
			||||||
 | 
					    gnupg \
 | 
				
			||||||
 | 
					    lsb-release \
 | 
				
			||||||
 | 
					    apt-transport-https \
 | 
				
			||||||
 | 
					    software-properties-common \
 | 
				
			||||||
 | 
					    unzip \
 | 
				
			||||||
 | 
					    bash \
 | 
				
			||||||
 | 
					    && rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Instalacja Azure CLI
 | 
				
			||||||
 | 
					RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Instalacja kubectl (najświeższa stabilna wersja)
 | 
				
			||||||
 | 
					RUN curl -sLo /usr/local/bin/kubectl https://dl.k8s.io/release/v1.33.1/bin/linux/amd64/kubectl \
 | 
				
			||||||
 | 
					    && chmod +x /usr/local/bin/kubectl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Instalacja kubelogin
 | 
				
			||||||
 | 
					RUN curl -sLo /tmp/kubelogin.zip https://github.com/Azure/kubelogin/releases/latest/download/kubelogin-linux-amd64.zip \
 | 
				
			||||||
 | 
					    && unzip -j /tmp/kubelogin.zip -d /usr/local/bin \
 | 
				
			||||||
 | 
					    && chmod +x /usr/local/bin/kubelogin \
 | 
				
			||||||
 | 
					    && rm /tmp/kubelogin.zip
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Domyślna komenda po starcie kontenera
 | 
				
			||||||
 | 
					CMD ["bash"]
 | 
				
			||||||
							
								
								
									
										86
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					pipeline {
 | 
				
			||||||
 | 
					    agent {
 | 
				
			||||||
 | 
					        kubernetes {
 | 
				
			||||||
 | 
					            yamlFile '.jenkins/podTemplate.yaml'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    environment {
 | 
				
			||||||
 | 
					        RESOURCE_GROUP = 'tst-aks-rg'
 | 
				
			||||||
 | 
					        CLUSTER_NAME   = 'build'
 | 
				
			||||||
 | 
					        DEPLOY_FILES   = 'namespace.yaml secret-store.yaml deploy.yaml ingress.yaml'
 | 
				
			||||||
 | 
					        NAMESPACE      = 'user-microservice'
 | 
				
			||||||
 | 
					        DEPLOYMENT     = 'api'
 | 
				
			||||||
 | 
					        CLIENT_ID      = 'c302726f-fafb-4143-94c1-67a70975574a'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    stages {
 | 
				
			||||||
 | 
					        stage('Checkout') {
 | 
				
			||||||
 | 
					            steps {
 | 
				
			||||||
 | 
					                container('kubectl') {
 | 
				
			||||||
 | 
					                    checkout scm
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        stage('Login to Azure & Get Kubeconfig') {
 | 
				
			||||||
 | 
					            steps {
 | 
				
			||||||
 | 
					                container('kubectl') {
 | 
				
			||||||
 | 
					                    sh '''
 | 
				
			||||||
 | 
					                        az login --identity --client-id ${CLIENT_ID}
 | 
				
			||||||
 | 
					                        az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --overwrite-existing
 | 
				
			||||||
 | 
					                        kubelogin convert-kubeconfig -l azurecli
 | 
				
			||||||
 | 
					                    '''
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        stage('Apply Kubernetes Resources') {
 | 
				
			||||||
 | 
					            steps {
 | 
				
			||||||
 | 
					                container('kubectl') {
 | 
				
			||||||
 | 
					                    script {
 | 
				
			||||||
 | 
					                        def files = DEPLOY_FILES.tokenize()
 | 
				
			||||||
 | 
					                        for (file in files) {
 | 
				
			||||||
 | 
					                            sh "kubectl apply -f ${file}"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        stage('Verify Deployment') {
 | 
				
			||||||
 | 
					            steps {
 | 
				
			||||||
 | 
					                container('kubectl') {
 | 
				
			||||||
 | 
					                    script {
 | 
				
			||||||
 | 
					                        // Waiting until all pods reach "ready" status
 | 
				
			||||||
 | 
					                        sh '''
 | 
				
			||||||
 | 
					                            echo "Waiting for deployment rollout..."
 | 
				
			||||||
 | 
					                            kubectl rollout status deployment/$DEPLOYMENT -n $NAMESPACE --timeout=60s
 | 
				
			||||||
 | 
					                        '''
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        stage('Health Check') {
 | 
				
			||||||
 | 
					            steps {
 | 
				
			||||||
 | 
					                container('kubectl') {
 | 
				
			||||||
 | 
					                    script {
 | 
				
			||||||
 | 
					                        // Check if app is healthy
 | 
				
			||||||
 | 
					                        def ingressUrl = "https://user-microservice.marcin00.pl/health"
 | 
				
			||||||
 | 
					                        sh """
 | 
				
			||||||
 | 
					                            echo "Checking app health ${ingressUrl}..."
 | 
				
			||||||
 | 
					                            for i in {1..30}; do
 | 
				
			||||||
 | 
					                                if curl -sf $ingressUrl; then
 | 
				
			||||||
 | 
					                                    echo "Health check OK"
 | 
				
			||||||
 | 
					                                    exit 0
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                    echo "Health check failed. Retry \$i..."
 | 
				
			||||||
 | 
					                                    sleep 5
 | 
				
			||||||
 | 
					                                fi
 | 
				
			||||||
 | 
					                            done
 | 
				
			||||||
 | 
					                            echo "Health check failed."
 | 
				
			||||||
 | 
					                            exit 1
 | 
				
			||||||
 | 
					                        """
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								.jenkins/podTemplate.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.jenkins/podTemplate.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: Pod
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  labels:
 | 
				
			||||||
 | 
					    some-label: jenkins-agent
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  containers:
 | 
				
			||||||
 | 
					  - name: kubectl
 | 
				
			||||||
 | 
					    image: marcin00.azurecr.io/azure-cli-kubectl:latest
 | 
				
			||||||
 | 
					    command:
 | 
				
			||||||
 | 
					    - cat
 | 
				
			||||||
 | 
					    tty: true
 | 
				
			||||||
 | 
					    volumeMounts:
 | 
				
			||||||
 | 
					    - name: workspace-volume
 | 
				
			||||||
 | 
					      mountPath: /home/jenkins/agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  volumes:
 | 
				
			||||||
 | 
					  - name: workspace-volume
 | 
				
			||||||
 | 
					    emptyDir: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  nodeSelector:
 | 
				
			||||||
 | 
					    kubernetes.io/os: linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  restartPolicy: Never
 | 
				
			||||||
@@ -1,13 +0,0 @@
 | 
				
			|||||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
 | 
					 | 
				
			||||||
kind: Kustomization
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: user-microservice
 | 
					 | 
				
			||||||
  namespace: flux-system
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  interval: 1m
 | 
					 | 
				
			||||||
  path: ./apps/user-microservice
 | 
					 | 
				
			||||||
  prune: true
 | 
					 | 
				
			||||||
  sourceRef:
 | 
					 | 
				
			||||||
    kind: GitRepository
 | 
					 | 
				
			||||||
    name: flux-system
 | 
					 | 
				
			||||||
  targetNamespace: default
 | 
					 | 
				
			||||||
@@ -81,7 +81,7 @@ spec:
 | 
				
			|||||||
    spec:
 | 
					    spec:
 | 
				
			||||||
      containers:
 | 
					      containers:
 | 
				
			||||||
        - name: api
 | 
					        - name: api
 | 
				
			||||||
          image: marcin00.azurecr.io/user-microservice:a79ae2d50f2fc3dfcf976eb2a8ebe32511ae4a33
 | 
					          image: marcin00.azurecr.io/user-microservice:36e7486726ac886225eac8299e472d36bccb671a
 | 
				
			||||||
          ports:
 | 
					          ports:
 | 
				
			||||||
            - containerPort: 80
 | 
					            - containerPort: 80
 | 
				
			||||||
          env:
 | 
					          env:
 | 
				
			||||||
		Reference in New Issue
	
	Block a user