T academy _ Jenkins를 이용한 CI/CD : 개발 환경 및 CI/CD 기본 동작, 파이프라인 구성 실습 (1)

2021. 9. 27. 22:45·Web/Jenkins 정리글

개발 환경의 종류

  • 개발자가 개발을 하는 Local 환경
  • 개발자들끼리 개발 내용에 대한 통합 테스트를 하는 Development 환경
  • 개발이 끝나고 QA 엔지니어 및 내부 사용자들이 사용해보기 위한 QA 환경
  • 실제 유저가 사용하는 Production 환경

-> LOCAL, DEV, QA, PORD 환경 이라고 지칭

 

개발 프로세스

  1. 개발자가 자신의 PC에서 개발을 진행한다.
  2. 다른 개발자가 작성한 코드와 차이가 발생하지 않는지 내부 테스트를 진행한다. (git hook 등)
  3. 진행한 내용을 다른 개발자들과 공유하기 위해 git과 같은 SCM에 올린다. -> 흔히 DEV 브랜치
  4. Jenkins는 Git을 계속 보고 있는다. 이때 코드에 변화가 생겼음을 인지하면,
    DEV 브랜치의 내용을 개발 환경에 배포하기 전에 테스트와 Lint 등 코드 포맷팅을 한다. 
  5. 배포하기 위한 빌드과정을 거친다.
  6. 코드를 배포한다.
  7. 테스트를 진행한다.
  8. 이 과정을 DEV, QA, PROD 환경 모두에서 동일하게 적용한다.

배포 환경에 따라 달리지는 것을 파악하고 그에 맞는 변수를 적절하게 사용하는것이 중요하다.

 


Jenkins EC2 설치

  1. 먼저 AWS에서 EC2 인스턴스를 생성해주고 들어가준다.
  2. ssh로 인스턴스에 접속한 후 jenkins 패키지를 추가한다.
    • sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo && sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  3. java, docker, git을 설치해준다
    • sudo yum install -y java-1.8.0-openjdk jenkins git docker
    • 만약 [Error: Package: jenkins-2.308-1.1.noarch (Jenkins) Requires: daemonize] 와 같은 에러가 발생하면 아래절차를 진행 후 다시 해보자
  4. java 버전을 변경해준다 : sudo alternatives --config java
  5. 젠킨스 실행 : service jenkins start

 

[에러 발생시]

1. [sudo vim /etc/yum.repos.d/epelfordaemonize.repo]로 파일을 생성하고 아래 내용을 넣어준다.

[daemonize]
baseurl=https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/
gpgcheck=no
enabled=yes

2. sudo yum install daemonize -y

3. sudo yum install jenkins java-1.8.0-openjdk-devel -y

 


젠킨스 실행

이러한 창이 뜨는 것을 확인할 수 있다. 핑크색으로 색칠된 path를 확인하면 password를 구할 수 있다. 해당 패스워드를 입력해서 진행하자.

들어가서 필수 플러그인을 설치하고 사용자 설정을 한 후 들어가면 시작 페이지가 나오게 된다.

젠킨스를 실행했으면 가장먼저 할일이 있다.

-> ❗️바로 Credentials를 추가하는 것❗️

 

git Credentials 추가

Jenkins가 원하는 Git Repository를 볼수 있게 Git Credentials를 추가해준다.

  • Dashboard -> Jenkins관리 -> Manage Credentials -> jenkins -> Global credentials (unrestricted) 로 들어가서 git 관련 Credentials를 추가해준다
  • git에 가서 developer settings에서 Personal Access Tokens을 발급받고, 해당 토큰을 비밀번호로 git id를 아이디로 설정해서 아래와 같이 생성해준다.

 

AWS IAM Credentials 추가

Jenkins가 AWS 관련 CLI를 자유롭게 할 수 있도록 하기 위해서는 AWS의 IAM에서 사용자를 발급받아서 ID/PW를 등록해주면 사용이 가능하다.

  1. AWS에 가서 IAM 사용자를 추가해준다.
  2. 생성된 IAM 사용자의 ACCESS KEY ID와 SECRET ACCESS KEY를 Jenkins의 Secret Text에 등록해준다. 이후 등록된 ID를 통해서 원하는 값을 가져와서 사용하게 된다.

jenkins의 pipline에서 아래와 같이 사용하게 된다.

environment {
	AWS_ACCESS_KEY_ID = credentials('awsAccessKeyId')
	AWS_SECRET_ACCESS_KEY = credentials('awsSecretAccessKey')
	AWS_DEFAULT_REGION = 'ap-northeast-2'
	HOME = '.' // Avoid npm root owned
}

awsAccessKeyId를 Credetials에 등록
keyID, Key 모두 등록이 된 모습

위와 같이 git, aws에 Jenkins가 자유롭게 접근할 수 있도록 권한을 부여해주었다.

반응형
저작자표시 (새창열림)

'Web > Jenkins 정리글' 카테고리의 다른 글

T academy _ Jenkins를 이용한 CI/CD : 파이프라인 구성 실습 (2)  (0) 2021.09.30
T academy _ Jenkins를 이용한 CI/CD 정리  (2) 2021.09.24
'Web/Jenkins 정리글' 카테고리의 다른 글
  • T academy _ Jenkins를 이용한 CI/CD : 파이프라인 구성 실습 (2)
  • T academy _ Jenkins를 이용한 CI/CD 정리
구름뭉치
구름뭉치
구름의 개발일기장
    반응형
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (289)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (5)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (7)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    크로아티아
    마우스
    부다페스트
    키보드 손목 받침대
    레이저
    마우스 패드
    류블라냐
    동유럽
    mx master s3 for mac
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
T academy _ Jenkins를 이용한 CI/CD : 개발 환경 및 CI/CD 기본 동작, 파이프라인 구성 실습 (1)
상단으로

티스토리툴바