Compare commits
	
		
			28 Commits
		
	
	
		
			4901890d0e
			...
			woodpecker
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					0bf37463a5 | ||
| 
						 | 
					118165902a | ||
| 
						 | 
					dbeea52cc2 | ||
| 
						 | 
					c73772fc88 | ||
| 
						 | 
					f64388221a | ||
| 
						 | 
					54148ca45c | ||
| 
						 | 
					aaf2a667fc | ||
| 
						 | 
					7c4cfdd6ed | ||
| 
						 | 
					c4550fd73d | ||
| 
						 | 
					eac2dca410 | ||
| 
						 | 
					b936180e8f | ||
| 
						 | 
					90839f6d6d | ||
| 
						 | 
					7c6cf97704 | ||
| 
						 | 
					32cb0e1bd1 | ||
| 
						 | 
					1b94139517 | ||
| 
						 | 
					da65261d71 | ||
| 
						 | 
					8c2523eb19 | ||
| 
						 | 
					6aac0b86e4 | ||
| 
						 | 
					6f33ab7297 | ||
| 
						 | 
					62b61856a8 | ||
| 
						 | 
					11ad241758 | ||
| 
						 | 
					bd629b4244 | ||
| 
						 | 
					e7bc2a962d | ||
| 
						 | 
					698fa9e1d1 | ||
| 
						 | 
					edc669507c | ||
| 
						 | 
					87994b727f | ||
| 
						 | 
					ebbad36f96 | ||
| 
						 | 
					9f9086b0d6 | 
							
								
								
									
										90
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										90
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							@@ -1,90 +0,0 @@
 | 
			
		||||
pipeline {
 | 
			
		||||
    agent {
 | 
			
		||||
        kubernetes {
 | 
			
		||||
            defaultContainer 'kubectl'
 | 
			
		||||
            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'
 | 
			
		||||
    }
 | 
			
		||||
    stages {
 | 
			
		||||
        stage('Checkout') {
 | 
			
		||||
            steps {
 | 
			
		||||
                container('kubectl') {
 | 
			
		||||
                    checkout scm
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        stage('Login to Azure & Get Kubeconfig') {
 | 
			
		||||
            steps {
 | 
			
		||||
                container('kubectl') {
 | 
			
		||||
                    sh '''
 | 
			
		||||
                        az login --identity
 | 
			
		||||
                        az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --overwrite-existing
 | 
			
		||||
                    '''
 | 
			
		||||
                }
 | 
			
		||||
                container('kubelogin') {
 | 
			
		||||
                    sh '''
 | 
			
		||||
                        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
 | 
			
		||||
                        """
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,30 +0,0 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Pod
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    some-label: jenkins-agent
 | 
			
		||||
spec:
 | 
			
		||||
  containers:
 | 
			
		||||
  - name: kubectl
 | 
			
		||||
    image: mcr.microsoft.com/azure-cli:latest
 | 
			
		||||
    command:
 | 
			
		||||
    - cat
 | 
			
		||||
    tty: true
 | 
			
		||||
    volumeMounts:
 | 
			
		||||
    - name: azure-config
 | 
			
		||||
      mountPath: /root/.azure
 | 
			
		||||
 | 
			
		||||
  - name: kubelogin
 | 
			
		||||
    image: ghcr.io/int128/kubelogin:latest
 | 
			
		||||
    command:
 | 
			
		||||
    - cat
 | 
			
		||||
    tty: true
 | 
			
		||||
 | 
			
		||||
  volumes:
 | 
			
		||||
  - name: azure-config
 | 
			
		||||
    emptyDir: {}
 | 
			
		||||
 | 
			
		||||
  nodeSelector:
 | 
			
		||||
    kubernetes.io/os: linux
 | 
			
		||||
 | 
			
		||||
  restartPolicy: Never
 | 
			
		||||
@@ -81,7 +81,7 @@ spec:
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: api
 | 
			
		||||
          image: marcin00.azurecr.io/user-microservice:76a351710fffe2be1ae10471bc1a2f511f481126
 | 
			
		||||
          image: marcin00.azurecr.io/user-microservice:37aa5692eff627f19cc5f7a37d882bf6126c9d13
 | 
			
		||||
          ports:
 | 
			
		||||
            - containerPort: 80
 | 
			
		||||
          env:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user