실습 2) Docker 빌드를 위한 Jenkins CI 활용

Hyerin·2022년 9월 15일
0

[Jenkins 소개와 설치]

Jenkins 소개

소프트웨어 개발 시 지속적 통합(Continuous Integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다


Jenkins 특징

  1. 빌드 자동화
    빌드 툴의 경우 젠킨스와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율을 높일 수 있다.

  2. 자동화 테스트
    젠킨스는 깃과같은 자동화 시스템과 연동하여 코드 자동화를 감시하고 자동화 테스트를 시행한다.

  3. 코드 품질검사
    자동화 테스트와 마찬가지로 코드 품질검사나 정적 분석을 빌드할 때 진행합니다.

  4. 빌드 파이프라인 구성
    두개 이상의 빌드 스크립트를 통합하여 빌드 파이프라인을 구성할 수 있다.


플러그인

=) 젠킨스의 기능을 확장해주기 때문에 대부분의 작업을 수행하거나 파이프라인화하여 관리할 수 있다.

대표적인 젠킨스의 플러그인

  1. Credential Plugin
    AWS 토큰, Git Access 토큰, Secret 키, SSH 의 정보를 저장할 때 사용한다.

  2. PipeLine Plugin
    젠킨스의 핵심기능인 파이프라인을 관리한다.

  3. Docker Plugin
    젠킨스에서 도커를 사용할 수 있다.



Jenkins 실습


1. Jenckins 컨테이너 실행 명령어

$ sudo docker run --name jenkins -d -p 8080:8080 -v ~/jenkins:/var/jenkins_home -u root jenkins/jenkins:latest
  • 옵션
    --name : 컨테이너의 이름
    -d : 백그라운드 실행
    -p : : 앞의 포트를 외부에 노출
    -v : : 앞의 디렉토리에 마운트함 / : 뒤의 디렉토리는 jenkins의 기본 홈 디렉토리
    -u : root 권한을 가짐

localhost:8080으로 접속함


2. Admin Password 확인 명령어

$ sudo docker exec -it jenkins bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"
  • 옵션
    -exec : 도커 실행
    -bash : 쉘을 이용함
    => cat 명령어를 실행해서 경로안의 initialAdminPassword를 보여줌

출력된 비밀번호 입력함

Install suggested plugins 선택

Jenkins 시작가능

Jenkins 관리 -> Security -> Manage Users -> + 사용자 생성 선택
새로 만든 계정 'test'로 로그인

플러그인 추가

Jenkins 관리 -> Plugin Manager
dsl, pipeline, git, docker, aws, ssh관련 플러그인을 설치함


Global Credentials 만들기

$ 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를 만든다.

  1. ssh-key
  • Jenkins 관리 -> Manage Credentials -> Stores scoped to Jenkins -> Jenkins 선택 -> Global credentials 선택 -> Add Credentials 선택
  • Private Key => id_rsa


  1. aws-key
    AWS 계정의 IAM 사용자 키를 사용함

  2. deploy-key
    CI/CD 파이프라인을 통해서 도커이미지를 빌드하고 레파지토리에 업로드(push)해서 배포 서버에 등록하고 실행할 때 젠킨스에서 배포 서버에 접근하기 위한 ssh키를 만들었다. AWS EC2 인스턴스에 접근할 때 사용하는 pem키를 사용함


profile
DevOps, 코딩 기록

0개의 댓글