ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NCP(Naver Cloud Platform)와 Jenkins -2) CI 환경 구축
    기술 이야기/CI&CD 2020. 10. 29. 01:01
    반응형

    CI 환경 구축

    • Jenkins 설정
      • Jenkins는 기본적으로 보안 설정이 되어있지 않기 때문에, 보안 설정을 따로 해줘야한다.
      • Jenkins url 접속 후 Configure Global Security 클릭
        • image
      • 권한 설정
        • Security Realm은 default 설정인 Jenkins' own user db로 설정한다.
        • image
        • 인증은 Matrix-based security로 설정
          • 사용자나 그룹에 권한을 부여할 수 있는 strategy
          • 젠킨스를 공동 작업하는 팀원이 있다면, 위에서 사용자의 가입 허용을 체크하고 계정을 생성해서 권한을 부여하면 된다.
          • 하지만, 젠킨스 관련한 작업은 우선 혼자 진행할 예정이기 때문에 모든 유저에 READ만, 작업자인는 나에게 모든 권한을 부여했다.
            • 필요하다면 나중에 팀원 계정/그룹을 만들어서 권한을 추가하자
      • 플러그인 관리
        • Jenkins 관리 -> 플러그인 관리
          • Github plugin => Jenkins와 Github 통합 (처음 설치 시 권장이라 이미 포함)
          • Global Slack Notifier Plugin => Slack 연동(Job 알림 설정) ~> 추후 필요하면 사용
          • Publish Over SSH => ssh로 빌드 파일 보내기
          • Embeddable Build Status Plugin => Github 레포에 빌드 상태바 생성
          • Manage Scripts => Node.js 기반의 서버를 배포하기 위한 Script
      • Jenkins Global 설정
        • Jenkins 관리 -> 시스템 설정 -> GitHub Servers
          • image
          • git api 주소를 설정해주고, 아래 Credentials에 git access token을 선택
          • 현재 없는 상태기 때문에 옆에 Add버튼을 클릭하여 만들어준다.
          • Credential 설정을 위해, 자신의 Github -> Settings -> Developer settings -> Personal access tokens로 들어가 repo와 admin:repo_hoot이 체크된 토큰을 발행한다
          • image
          • 발행 후, 생성된 secret을 아래와 같이 Credential Secret에 입력
          • image
      • 프로젝트 생성 및 설정
        • 좌측 카테고리 네비게이션에서 새로운 Item -> Freestyle project 생성
        • image
        • 소스코드 관리에서 Git 선택 후, URL 및 Credentials, build할 branch 설정
        • image
        • user id와 pwd로 관리하는 것은 보안상 취약점 때문에 ssh키로 관리하기로 한다.
        • ~> git의 clone 주소를 https가 아니라, ssh로 변경해서 주소를 입력해줘야한다.
        • image
        • 위의 repo 주소는 사진의 주소로 입력해줘야한다.
        • image
        • ssh 설치하기
          • Jenkins 서버에 접속해서 ssh키를 생성해준다.
          • ssh-keygen -t rsa -f id_rsa
          • 물어보는 대답에 대해서는 엔터로 넘어가준다.
          • ls -al ~/.ssh/로 ssh파일이 생성된 것을 확인해준다고 하는데, 나의 경우에는 루프 디렉토리 아래 바로 퍼블릭키와 프라이빗 키가 생겼다.
          • 그래서 mkdir을 통해 .ssh 디렉토리를 만들어주고, mv 명령어로 생성된 public/private 키를 옮겨줬다. (ssh키 관리를 위해)
        • cat ~/.ssh/id_rsa 로 private key 확인, credentials private key에 입력(Kind에 SSH 선택)
        • image
        • BEGIN RSA 부터 END까지 모두 복사해서 붙여넣는다.
        • Username에는 현재 어떤 username이 들어가야하는지 잘 모르겠어서, 일단 임의로 넣어주었다.(CheckPoint) ~> username은 key 이름으로 나타나는 것으로 확인(별칭 같은 것)
        • cat ~/.ssh/id_rsa.pub 로 public key를 확인, Git repo의 settings -> Deploy keys에 등록
          • image
          • 이 과정까지 되면, Jenkins와 Github이 연동 되는 것까지 설정
        • push 했을 때, Jenkins가 push 이벤트를 받을 수 있도록 설정
          • git repo의 setting -> webhooks에서 jenkins 서버의 주소를 등록해준다
          • image-20201028161203187
          • 가려진 부분에 public ip를 입력해주고, 나머지 설정은 위와 같이 해준다
          • webhook 등록 후, Recent Deliveries에 연결에 실패했다고 뜬다. payload에 public ip 설정할 때, jenkins port번호까지 함께 등록해주니까 연결에 성공했다.
          • 여기까지 github repo 설정 및 연결이 끝났다.
        • 빌드 유발에서 GitHub hook trigger for GITScm polling을 체크해줘서, push가 일어나면 Jenkins 프로젝트에 빌드가 시작되는 것을 확인하자
          • image
          • image
          • 빌드가 정상적으로 완료돼서, Revision된 것을 확인하면, 여기까지 CI 설정이 끝났다!!!!!!

    참고 링크 : 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

    반응형

    댓글

Designed by Tistory.