개요
아래 스펙의 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 입니다)
목차
과정
3. Webhook settings
- GitHub 에서 일어나는 push, commit, tag 등의 액션을 Webhook 으로 Jenkins 에서 받아보도록 설정합니다.
- Manage Jenkins > Configure System > GitHub > Add GitHub Server
- Name - github (이름은 자유입니다.)
API URL - https://api.github.com (기본값입니다.)를 입력해줍니다.
- 참고: GitHub Enterprise 의경우 API URL 란에
https://GITHUB-ENTERPRISE-URL/api/v3 를 입력해줍니다.
- Credentials에 Add > Jenkins 를 누른 뒤
GitHub에 접근할 계정, 패스워드, id - github-account 를 입력해줍니다.
앞으로 진행할 Github Organization, Repository 에서 Owner 권한이 있어야합니다.
- 하지만 여전히 credentials 리스트에는 등록한 계정은 없고
- none -
밖에 없습니다.
- Credentials 에는 여러종류가 있는데, 방금은
Username with password
를 등록했고,
GitHub Server 의 Credentials 는 secret text
(GitHub Personal Access Token) 종류를 필요로 합니다.
(방금 등록한 GitHub username, password 은 이 작업말고 다른곳에 쓰일예정입니다.)
- 따라서 이제
secret text
(GitHub Personal Access Token) 을 등록해줘야 하는데,
수동으로 https://github.com/settings/tokens/new 에서 Personal Access Token 을 직접 등록해도 되지만,
이번 과정에서는 방금 등록한 GitHub username, password 를 이용해서 Personal Access Token 을 자동생성해봅니다.
참고: https://GITHUB-ENTERPRISE-URL/settings/tokens/new
- Advanced…(두개중 아래에있는것) >
Manage additional GitHub actions > Convert login and password to token 선택
- Credentials - 방금 등록한 계정 선택, Create token credentials 클릭
참고: GitHub Enterprise 는 API URL 을 https://GITHUB-ENTERPRISE-URL/api/v3 로 변경해줍니다.
- 이러면 GitHub 에는 Personal Access Token 이 생성되고,
그 토큰이 jenkins Credentials 에 secret text
의 형태로 저장됩니다.
참고: https://github.com/settings/tokens 에서 확인가능합니다.
GitHub Enterprise: https://GITHUB-ENTERPRISE-URL/settings/tokens
- 위에 Credentials 로 돌아가면 여전히
- none -
밖에 없는데,
저장후 다시 Manage Jenkins > Configure System 를 들어오면,
드디어 리스트에 auto generated token 이 등장합니다.
- Credentials을 고르고, Test connection으로 작동을 확인해줍니다.
- Save 를 클릭합니다.
- 이제 Jenkins 는 방금 등록한 Personal Access Token 을 활용해서
앞으로 만들 Pipeline Organization, Multibranch job 의 GitHub Organization, Repository 에 webhook을 자동으로 생성합니다.
- Ref: cloudbees - GitHub Integration: Webhooks