All Articles

Jenkins pipeline tutorials - 2. Install github authentication plugin

개요

아래 스펙의 jenkins를 설치하는것을 목적으로 합니다.

  • jenkins(host container)를 docker image를 사용하여 구동합니다.
  • jenkins login을 github auth와 연동합니다.
  • UI로 blueocean을 사용합니다.
  • Jenkins job item 으로 pipeline job(organization, multi branch) 을 사용합니다.
  • Groovy 언어로 작성된 Jenkinsfile 을 사용합니다.
  • 메일발송으로 emailext plugin를 사용합니다.
  • jenkins job을 docker agent를 사용하여 구동합니다.(위의 host container와 구분되는 runner container 입니다)

목차

과정

2. Install github authentication plugin

2-1. plugin 설치

  • 아까 입력한 관리자계정으로 접속해줍니다.
    9627d258-10f3-11e9-8b36-c0524e734271

  • Manage Jenkins - Manage plugins - available탭 들어갑니다.
    d4dbc9b4-10f3-11e9-8eea-cd02d396bca7

  • github authentication plugin 체크, download now and install after restart를 선택합니다.
    0a74cec2-10f4-11e9-82bd-04d9e3da1111

  • 왜인지모르지만 아래화면에서 멈춰있어서 restart jenkins when installation is complete and no jobs are running 체크했습니다.
    (원래 자동으로 되는데)
    32c607ce-10f4-11e9-8f11-f63c704a2ebf

2-2. plugin 설정

  • manage jenkins - configure global security - github authentication plugin 선택합니다.
    cc5f1df2-1113-11e9-9829-df19061f64bd

  • GitHub Web URI - https://github.com
    GitHub API URI - https://api.github.com
  • 참고: github enterprise 의 경우 아래 내용을 입력해줍니다.
    GitHub Web URI - https://GITHUB-ENTERPRISE-URL
    GitHub API URI - https://GITHUB-ENTERPRISE-URL/api/v3
    스크린샷 2019-04-25 오후 11 25 04

  • client id, client secret 는 github 에서 OAuth app을 등록한뒤 생성되는 값을 가져와줍니다.
    OAuth 발급링크: https://github.com/settings/applications/new
    참고: github enterprise 의 경우 https://GITHUB-ENTERPRISE-URL/settings/applications/new
  • Register a new OAuth application 페이지에서
    homepage url - http://USER-JENKINS-HOST/
    Authorization callback URL - http://USER-JENKINS-HOST/securityRealm/finishLogin
    를 입력, Register application 을 클릭해줍니다.
    스크린샷 2019-04-25 오후 10 52 47

  • OAuth app 이 생성된뒤 뜨는 Client ID, Client Secret 을 jenkins 설정으로 가져옵니다.
    (detail을 위해 logo도 Upload 했습니다…)
    스크린샷 2019-04-25 오후 10 55 56

  • 가져온 Client ID, Secret 입력해줍니다. 스크린샷 2019-04-25 오후 10 58 22

  • Jenkins configure security 화면에서 아래의 Authorization - Matrix-based security를 선택
    Add user or group으로 GITHUB-ORGANIZATION-NAME를 넣어줍니다.
    스크린샷 2019-04-25 오후 10 59 21 스크린샷 2019-04-25 오후 10 59 32 스크린샷 2019-04-25 오후 10 59 46

  • 모든권한을 부여합니다.
    2225ed0b11fc77c412634d3ba13bb375

  • save 클릭. 이제 아까 생성한 관리자계정은 github 로 가입한 계정이 아니기때문에 모든 권한을 잃어버립니다.
    스크린샷 2019-04-25 오후 11 00 34

  • 다시 로그인하면 github 계정에게 authorize 요청 창이 뜨고, 승인하면 로그인이 완료됩니다.
    스크린샷 2019-04-25 오후 11 02 13

  • 주의: github Authorize 주기 전 꼭 해당 Organization 에 대한 열람권한을 Grant 해줘야합니다.
    이 과정을 생략하면, 해당 Organization의 멤버인지 확인할 방법이 없기때문에 jenkins는 해당 유저에게 권한을 주지않습니다.
    (최초 Jenkins 가입시 Grant 되어있지않으면, 이후에 github settings 에 들어가 Organization 열람권한을 주더라도 Jenkins는 권한을 주지 없습니다.) 34f5a7b3e3b206779cff94b7fc977db3

  • 참고: 이 경우 방금 로그아웃한 페이지(http://USER-JENKINS-HOST/githubLogout/ )로 리디렉션되기때문에 don’t run away라는 창이 표시됩니다. 메인으로 이동해줍니다.


  • github authentication 연동 완료.
    ref: plugin 문서 https://wiki.jenkins.io/display/JENKINS/GitHub+OAuth+Plugin

Published 25 Apr 2019

kujyp 개발블로그

ML DevOps, Python, Docker ...
kujyp on Github