CI/CD, Jenkins 란 무엇일까

Yujin Shin·2021년 3월 17일
0

TIL🔥

목록 보기
1/5
post-thumbnail

1. CI/CD 란

  • CI(Continuous Integration) : 여러 개발자들의 코드를 계속해서 통합하는 것.
  • CD(Coutinuous Delivery) : 개발자들이 코드를 계속 작성하면, 사용자 및 내부 사용자들(즉, QA 등등)이 계속 쓸 수 있게 만드는 것
    지속적으로 배포가능한 상태를 유지하는 것

2. Jenkins 란

  • Java Runtime 위에서 동작하는 자동화 서버
  • 다양한 플러그인을 종합해서 CI/CD Pipeline을 만들어서 자동화 작업
  • 예를 들어 로컬에서 개발 -> 커밋 -> 푸시 하면 정해진 파이프라인을 따라 빌드, 테스트 등을 하여 배포시키는 것!

Pipeline

  • Agent Section : 여러 Slave를 두고 작업을 할 때 어떤 젠킨스가 어떤 일을 할지 지정한다.
  • Post Section : 각 스테이지가 끝난 후 후속 조치 설정 (ex. success, failure, always, cleanup..)
  • Stages Section : 어떤 일들을 처리할 건지 일련의 Stage를 정의함. 일종의 카테고리
  • Declaratives : Enviroment -> 어떤 Pipeline이나 stage scope 의 환경 변수 설정
    Parameter -> 파이프라인 실행시 파라미터 받음
    Triggers -> 어떤 형태로 트리거 되는가
    When -> 언제 실행되는가 ( ex. 맨처음에만 변수 설정하고 그 뒤에는 분기문을 둬서 안해도 되게)
  • Steps : 여러 작업들을 실행 가능
pipeline {
	agent any // 어떤 Jenkins한테 일을 시킬꺼야
    
    stages {
    	stage('Prepare') {
        	steps { // Prepare에서 해야할 일들
            	git url : 'https://github~~~',
                    branch : 'master'
                    credentialsId : 'jenkinsgit'
                sh 'ls'
                dir ('./docs'){
                	sh '''
                    aws s3 sync ./ s3://test
                    '''
                    } 
				}
                
      post {
      	success {
      		echo 'success'
                }
           }
        }
    }
    
    stage ('Build') {
    	steps {
        	echo 'Building...'
            }
       }
    }
    
 }

Jenkins Plugin

  1. Credentials Plugin
  • 각종 중요정보 (AWS Token, Git access token, etc...) 을 저장하고 있음
  • RSA 기반의 고유 아이디로 공개키 방식을 암호화 시켜서 보안에 안전하다.
  • 일반적으로 Private Network안에서 실행해서 안전한 편.

배포 환경 관리

  • AWS System manager의 parameter store와 같은 곳에서 키 관리 서비스 쓰면 좋음
  • 개발/통테/운영기에서 다른게 보통 url, db 패스워드 등등이 다르니까 해당 서버에 알맞게 Jenkins가 파라미터를 가져다 쓰는게 핵심

참고자료
https://www.youtube.com/watch?v=JPDKLgX5bRg

profile
아무것도 몰라여 @_@

0개의 댓글