74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
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}
 | 
						|
                    '''
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        stage('Commit new version to GitOps repo') {
 | 
						|
            steps {
 | 
						|
                container('git') {
 | 
						|
                    sh '''
 | 
						|
                        git config --global user.name "jenkins[bot]"
 | 
						|
                        git config --global user.email "jenkins@marcin00.pl"
 | 
						|
                    '''
 | 
						|
                    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
 | 
						|
                    '''
 | 
						|
                    sh 'git commit -am "JENKINS: Changed deployed version to $GIT_COMMIT"'
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |