CI 설계하기 by Jenkins

sieun·2022년 2월 4일
0
post-thumbnail

개요

프로젝트의 규모가 클수록 코드 작성부터 통합까지의 단계를 자동화해주는 CI의 필요가 커집니다.

진행중인 e-commerce 프로젝트는 대용량 서버라는 가정하에 진행되었습니다. 때문에 코드의 변경사항에 대해 테스트, 빌드, 통합하는 과정을 자동화하는 CI를 사용한다면 시간을 많이 단축시킬 수 있습니다.

CI툴로는 Jenkins를 이용하였고, jenkins에 접속하여 깃허브와 연동하여 CI를 구축하는 과정을 정리해보려고 합니다.



사전작업

  • jenkins 서버생성

참고 ) https://www.ncloud.com/guideCenter/guide/9


서버 접속

mac 기본 터미널로 ssh연결

isieun@isieun-ui-MacBookPro ~ % ssh [서버 사용자 ID]@[서버 접속 IP]-p [포트번호]       
The authenticity of host '~~' can't be established.
ECDSA key fingerprint is SHA256:~~.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes    // ssh연결을 위한 key발행 및 연결 계속할지 여부 확인
Warning: Permanently added '~~' (ECDSA) to the list of known hosts.
root@~~'s password:   // 패스워드 입력
[root@jenkins-server ~]# 

사용자 비밀번호 변경

[root@jenkins-server ~]# passwd root
root 사용자의 비밀 번호 변경 중
새  암호:
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

jenkins 프로세스 실행

[root@jenkins-server ~]# service jenkins start   // Jenkins 프로세스 실행
Starting jenkins (via systemctl):                          [  OK  ]
[root@jenkins-server ~]#



jenkins 접속

브라우저로 공인IP:18080 에 접속

Administrator password에 초기 패스워드를 입력하시면 됩니다.

초기 패스워드는 jenkins 터미널에서 아래의 명령어를 통해 알 수 있습니다.

cat /var/lib/jenkins/secrets/initialAdminPassword

jenkins plugin 설치

  • Install suggested plugins : jenkins community에서 가장 유용하다고 알려진 플러그인들을 설치
  • select plugins to install : 원하는 플러그인을 직접 선택하여 설치

설정 문제가 생겼을 때, 더 빠른 해결을 위해 Jenkins 커뮤니티에서 해결이 가능한 install suggested plugins를 선택하였습니다.


계정 및 url 설정

  • 관리자 계정 만들기
  • url설정 (default값을 권장함)

jenkins 접속된 화면

여기까지 진행하시면 다음 화면과 같이 jenkins에 접속하실 수 있습니다.



CI 환경 구축

보안 설정

jenkins는 기본으로 보안 설정이 되어있지 않아 따로 설정을 해주어야 합니다.

  • jenkins 관리클릭 → securityconfigure Global Security 클릭

  • Add user...클릭 - 계정 생성 - 권한 부여 작업자인 계정만 모든 권한 부여 (필요시 팀원을 추가하여 진행하면 됩니다)
  • save 클릭

플러그인 관리

  • jenkins 관리 클릭 → 플러그인 관리 클릭

설치할 플러그인을 검색하시면 됩니다.

  • global slack notifier - 슬랙과 연동하여 알림을 설정할 수 있습니다.
  • embeded build status - github repository에 빌드 상태바를 생성합니다.

github 설정

  • jenkins관리시스템 설정GitHub

  • Add GitHub Server클릭

  • Name, Credentials 설정하기
  • CredentialsAdd를 클릭하여 아래와 같이 추가

  • Secret부분은 아래와 같이 진행하여 입력하면 됩니다.

자신의 githubsettingsDeveloper settingsPersonal access tockensGenerate new tocken 클릭

  • repoadmin:repo_hook 체크
  • Generate tocken 클릭
  • 발행 후에 생성된 secret을 복사하여 사용하면 됩니다.

프로젝트 생성 및 github연동

  • github repository 주소 입력

  • 빌드할 branch 설정

  • jenkins terminal에서 아래처럼 명령어 입력

[root@jenkins-server2 ~]# ssh-keygen -t rsa -f id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphras e): 
Enter same passphrase again:

...

[root@jenkins-server ~]# ls
id_rsa  id_rsa.pub
[root@jenkins-server ~]# mkdir .ssh
[root@jenkins-server ~]# ls
id_rsa  id_rsa.pub
[root@jenkins-server ~]# mv id_rsa .ssh
[root@jenkins-server ~]# mv id_rsa.pub .ssh
[root@jenkins-server ~]# ls
[root@jenkins-server ~]# cd .ssh
[root@jenkins-server .ssh]# ls
id_rsa  id_rsa.pub
[root@jenkins-server .ssh]# cat ~/.ssh/id_rsa       // private key 확인
  • mkdir로 .ssh 디렉토리를 만들어 이동시킨 이유는 ssh키 관리를 위함

  • 마지막 명령어로 확인한 private key 처음부터 끝까지를 복사

  • Credentials → Add 클릭

  • Private KeyEnter directlyAdd 클릭
  • 입력란에 복사한 키를 붙여넣기
[root@jenkins-server .ssh]# cat ~/.ssh/id_rsa.pub     //public key 확인
  • 터미널에서 해당 명령어로 출력된 public key를 복사
  • github repository → SettingsDeploy keysAdd 클릭

  • Key 공란에 붙여넣기

  • 빌드유발 → GitHub hook trigger for GITScm polling 선택

push 이벤트 수신 설정

  • github repository → SettingsWebhooksAdd Webhook 클릭

  • Add webhook 클릭



결과

기존 코드를 빌드해보면 오른쪽 화면과 같이 빌드가 성공합니다. 또한 push가 일어나면 Jenkins프로젝트에 빌드가 자동으로 이루어집니다.



후기

CI툴로 유명한 Jenkins를 다루어보면서, Jenkins에서 제공하는 기능이 많다는 것을 알게되었습니다. 프로젝트의 크기가 커질수록 CI/CD가 중요해지기 때문에 Jenkins가 제공하는 기능들에 대해 좀 더 알아야 할 필요가있다 생각하였습니다. 특히나 파이프라인 구축이나 slack알림 연동도 추후에 진행해 볼 예정입니다.

📕 Reference

https://www.jenkins.io/doc/book/installing/macos/
https://zin0-0.tistory.com/268?category=923002
https://velog.io/@doyuni/Jenkins-NAVER-Cloud-Platform-Docker%EB%A1%9C-CICD-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-1%ED%8E%B8-khk4w6hrm0

profile
열심히 공부중입니다😇

0개의 댓글