Compare commits
	
		
			45 Commits
		
	
	
		
			master
			...
			argoworkfl
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					39961e438f | ||
| 
						 | 
					698cd301fd | ||
| 
						 | 
					6394e21897 | ||
| 
						 | 
					6f9740adee | ||
| 
						 | 
					6ac5104cfe | ||
| 
						 | 
					d55bf535a7 | ||
| 
						 | 
					ade5843804 | ||
| 
						 | 
					22de400571 | ||
| 
						 | 
					fd8ede3fb3 | ||
| 
						 | 
					03c1b5d058 | ||
| 
						 | 
					c97ff994d7 | ||
| 
						 | 
					98214e98ab | ||
| 
						 | 
					594f5ff8e7 | ||
| 
						 | 
					61c9ff343c | ||
| 
						 | 
					3cedea1085 | ||
| 
						 | 
					5359fc3267 | ||
| 
						 | 
					a5a112c746 | ||
| 
						 | 
					1c06a28a41 | ||
| 
						 | 
					bfc450dc14 | ||
| 
						 | 
					ded2175859 | ||
| 
						 | 
					62e4adc368 | ||
| 
						 | 
					2b8ae6ed2c | ||
| 
						 | 
					60175f3f2c | ||
| 
						 | 
					d92dceccac | ||
| 
						 | 
					c814cf80e2 | ||
| 
						 | 
					2aadba7822 | ||
| 
						 | 
					599a4d26d5 | ||
| 
						 | 
					59ab88cdea | ||
| 
						 | 
					604a805374 | ||
| 
						 | 
					659b062551 | ||
| 
						 | 
					d520cea264 | ||
| 
						 | 
					0659708eab | ||
| 
						 | 
					2140aaf047 | ||
| 
						 | 
					6ad581cfd2 | ||
| 
						 | 
					02579e25d4 | ||
| 
						 | 
					d8188dcfc8 | ||
| 
						 | 
					997282b4f1 | ||
| 
						 | 
					bfa54596b6 | ||
| 
						 | 
					ed1f1575e4 | ||
| 
						 | 
					f7e9b0bd90 | ||
| 
						 | 
					bcfb0897bf | ||
| 
						 | 
					c09d7c448f | ||
| 
						 | 
					cbd77b8bb1 | ||
| 
						 | 
					4901890d0e | ||
| 
						 | 
					f55776916e | 
@@ -1,32 +0,0 @@
 | 
				
			|||||||
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
									
									
								
							
							
						
						
									
										86
									
								
								.jenkins/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							@@ -1,86 +0,0 @@
 | 
				
			|||||||
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
 | 
					 | 
				
			||||||
                        """
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
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
 | 
					 | 
				
			||||||
@@ -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:a09f4cfac66eae1014fdd47728fabcdd1d1d9475
 | 
				
			||||||
          ports:
 | 
					          ports:
 | 
				
			||||||
            - containerPort: 80
 | 
					            - containerPort: 80
 | 
				
			||||||
          env:
 | 
					          env:
 | 
				
			||||||
							
								
								
									
										17
									
								
								clusters/prod/flux-receiver.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								clusters/prod/flux-receiver.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					apiVersion: notification.toolkit.fluxcd.io/v1
 | 
				
			||||||
 | 
					kind: Receiver
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: gitea-receiver
 | 
				
			||||||
 | 
					  namespace: flux-system
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  type: github
 | 
				
			||||||
 | 
					  events:
 | 
				
			||||||
 | 
					    - "ping"
 | 
				
			||||||
 | 
					    - "push"
 | 
				
			||||||
 | 
					  secretRef:
 | 
				
			||||||
 | 
					    name: webhook-token
 | 
				
			||||||
 | 
					  resources:
 | 
				
			||||||
 | 
					    - apiVersion: source.toolkit.fluxcd.io/v1
 | 
				
			||||||
 | 
					      kind: GitRepository
 | 
				
			||||||
 | 
					      name: user-microservice-repo
 | 
				
			||||||
 | 
					      namespace: flux-system
 | 
				
			||||||
							
								
								
									
										20
									
								
								clusters/prod/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								clusters/prod/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					apiVersion: networking.k8s.io/v1
 | 
				
			||||||
 | 
					kind: Ingress
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: flux-receiver
 | 
				
			||||||
 | 
					  namespace: flux-system
 | 
				
			||||||
 | 
					  annotations:
 | 
				
			||||||
 | 
					    nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  ingressClassName: nginx
 | 
				
			||||||
 | 
					  rules:
 | 
				
			||||||
 | 
					    - host: flux.marcin00.pl
 | 
				
			||||||
 | 
					      http:
 | 
				
			||||||
 | 
					        paths:
 | 
				
			||||||
 | 
					          - path: /
 | 
				
			||||||
 | 
					            pathType: Prefix
 | 
				
			||||||
 | 
					            backend:
 | 
				
			||||||
 | 
					              service:
 | 
				
			||||||
 | 
					                name: notification-controller
 | 
				
			||||||
 | 
					                port:
 | 
				
			||||||
 | 
					                  number: 80
 | 
				
			||||||
							
								
								
									
										13
									
								
								clusters/prod/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								clusters/prod/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					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: user-microservice-repo
 | 
				
			||||||
 | 
					  targetNamespace: user-microservice
 | 
				
			||||||
							
								
								
									
										10
									
								
								clusters/prod/source.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								clusters/prod/source.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					apiVersion: source.toolkit.fluxcd.io/v1
 | 
				
			||||||
 | 
					kind: GitRepository
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: user-microservice-repo
 | 
				
			||||||
 | 
					  namespace: flux-system
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  interval: 1m
 | 
				
			||||||
 | 
					  url: https://gitea.marcin00.pl/pikram/user-microservice-deploy.git
 | 
				
			||||||
 | 
					  ref:
 | 
				
			||||||
 | 
					    branch: woodpecker-fluxcd-deploy
 | 
				
			||||||
		Reference in New Issue
	
	Block a user