1. 젠킨스 플러그인 설치
1)gradle로 빌드하기위해 gradle 관련 플러그인 설치
Dashboard > Manage Jenkins > Tools
Gradle Installations > Version 선택 하고 Save
2) SSH agent 플러그인 설치
SSH를 통해 EC2 인스턴스에 접근할 것이다. 이를 위해 SSH agent를 설치해야한다.
Dashboard > Manage Jenkins > Plugins > Available plugins
Available plugins > SSH agent 검색 > 설치
설치가 완료되었다.
2. Repository WebHook 등록
사용 github
https://github.com/seongjju/opensource
github repository의 특정 branch에 push 이벤트 발생 시 자동 배포가 발생하기 위해, webhook을 등록한다.
webhook을 통해 github에 대한 push event를 감지할 수 있다.
등록하고 싶은 repository의 Settings > Webhooks > Add webhook을 선택
http://3.35.152.81:8080/github-webhook/
payload URL: 젠킨스 접근하기 위한 URL, POST요청
Content type: POST요청시 json 형식을 전달
초록색 체크 표시가 뜨면 성공이다.
이제 깃허브 토큰을 발급받자
젠킨스에서 github에 접근할 때 키가 필요하다. 이를 토큰이라 한다.
github 계정에서 settings
Personal access tokens > Tokens (classic) > Generate new token > Generate new token (classic)을 클릭
repo, admin:org, admin:repo_hook 3가지에 대한 권한을 준다. 이는 각각 repository, organization, webhook에 대한 권한을 의미
3. Credentials 설정
우리는 3가지의 Credentials의 설정을 해야한다.
DashBoard > Manage Jenkins > Credentials
Jenkins > Domains > global 선택
1) SSH 연결
Add Credentials 클릭
ID: 키 식별자 이름 입력
Username: EC2에 접근할 때 사용하는 사용자 이름
Private Key: EC2 인스턴스 접속을 위한 pem 키를 입력 (cat xx.pem을 통해 나온 내용을 복사 붙여넣기 해준다.)
우분투 접속하는 .pem 키를 credential에 넣어야한다.
예를들어 Desktop에 a.pem 키가 있다면
cd Desktop
cat a.pem
-----BEGIN RSA PRIVATE KEY-----
(이 사이에 키 내용이 들어감)
-----END RSA PRIVATE KEY-----
이때, (이 사이에 키 내용이 들어감) 이부분을 넣는게 아니라 BEGIN ~ END 부분까지 다 넣어야한다. 이것때문에 배포시 ssh 문제가 계속 생겼다.
추가가 완료되면 목록에 뜬다.
2) Jenkins와 github token 연동
2번에서 발급 받은 github token과 jenkins를 연동한다.
Manage Jenkins > Credentials
Username: github ID
Password: 발급받은 Github token
ID: ID 임의로 지정
3) Jenkins와 github server 연동
위에서 webhook을 등록하면, github에서 push 발생하면, 서버에 요청을 보내는데, 이때 필요한 인증 정보를 등록하는 과정
Manage Jenkins > System > GitHub
Name을 입력하고, Credentials밑의 Add > Jenkins 선택
Secret: 발급받은 Github token
Credentials에 위에서 지정한 id를 선택
Test connection을 눌렀을 때
이 문구가 나오면 정상적으로 등록된 것
이제 깃허브연결이 끝났다. 파이프라인을 수정하여 배포를 완료하자.
'🐳인프라 > Jenkins' 카테고리의 다른 글
Jenkins 원격 서버 배포(Publish Over SSH) (4) (0) | 2024.05.13 |
---|---|
Jenkins 원격 서버 배포(Publish Over SSH) (2) (0) | 2024.05.13 |
Jenkins 원격 서버 배포(Publish Over SSH) (1) (0) | 2024.05.13 |
Jenkins란? (0) | 2024.05.13 |