[Jenkins 소개와 설치]
Jenkins 소개
소프트웨어 개발 시
지속적 통합(Continuous Integration)
서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때버전 충돌을 방지
하기 위해 각자 작업한 내용을 공유 영역에 있는Git등의 저장소에 빈번히 업로드함
으로써 지속적 통합이 가능하도록 해 준다
빌드 자동화
빌드 툴의 경우 젠킨스와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율을 높일
수 있다.
자동화 테스트
젠킨스는 깃과같은 자동화 시스템과 연동하여 코드 자동화를 감시
하고 자동화 테스트를 시행한다.
코드 품질검사
자동화 테스트와 마찬가지로 코드 품질검사나 정적 분석을 빌드할 때 진행합니다.
빌드 파이프라인 구성
두개 이상의 빌드 스크립트를 통합
하여 빌드 파이프라인을 구성할 수 있다.
=) 젠킨스의 기능을 확장해주기 때문에 대부분의 작업을 수행하거나 파이프라인화하여 관리할 수 있다.
Credential Plugin
AWS 토큰, Git Access 토큰, Secret 키, SSH 의 정보를 저장할 때 사용한다.
PipeLine Plugin
젠킨스의 핵심기능인 파이프라인을 관리한다.
Docker Plugin
젠킨스에서 도커를 사용할 수 있다.
$ sudo docker run --name jenkins -d -p 8080:8080 -v ~/jenkins:/var/jenkins_home -u root jenkins/jenkins:latest
:
앞의 포트를 외부에 노출:
앞의 디렉토리에 마운트함 / :
뒤의 디렉토리는 jenkins의 기본 홈 디렉토리root
권한을 가짐localhost:8080으로 접속함
$ sudo docker exec -it jenkins bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"
cat
명령어를 실행해서 경로안의 initialAdminPassword
를 보여줌Jenkins 관리 -> Security -> Manage Users -> + 사용자 생성 선택
새로 만든 계정 'test'로 로그인
Jenkins 관리 -> Plugin Manager
dsl, pipeline, git, docker, aws, ssh관련 플러그인을 설치함
$ mkdir ssh-key
$ cd ssh-key
$ ssh-keygen -b 2048 -t rsa -f ~/ssh-key/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/ssh-key/id_rsa
Your public key has been saved in /home/ubuntu/ssh-key/id_rsa.pub
The key fingerprint is:
SHA256:S5JOaSgFwhlBKOMFMep6Kx+vYKxprhsI3WI3C/oK+fk ubuntu@ip-172-31-24-215
The key's randomart image is:
+---[RSA 2048]----+
|=BB |
|=+.o |
|+.. . |
|.o o . o |
|..* = * S |
|=+ = * o . |
|Ooo . . . |
|=O = |
|X*BoE |
+----[SHA256]-----+
Github -> Settings -> SSH and GPG keys
id_rsa.pub 내용을 등록함
젠킨스에 키 등록
=) CI/CD 배포를 위한 KEY를 만든다.
aws-key
AWS 계정의 IAM 사용자 키를 사용함
deploy-key
CI/CD 파이프라인을 통해서 도커이미지를 빌드하고 레파지토리에 업로드(push)해서 배포 서버에 등록하고 실행할 때 젠킨스에서 배포 서버에 접근하기 위한 ssh키를 만들었다. AWS EC2 인스턴스에 접근할 때 사용하는 pem키를 사용함