1. AWS 사용할 시
저는 AWS의 EC2를 사용했는데 host와 연결할 수 없다고 나왔습니다.
이런 경우엔 AWS EC2의 ssh를 깃허브에서 접근할 수 있게 처리를 해주어야 합니다.
먼저 Jenkins가 설치된 EC2 인스턴스 폴더에 SSH로 접근해줍니다. (저는 docker container를 사용했습니다)
각자 Jenkins가 설치된 위치가 다르기 때문에 위치를 따로 확인하셔야 합니다.
그다음 jenkins 설치 폴더에 .ssh라는 폴더를 생성하고 .ssh에 들어갑니다.
그리고 ssh-keygen 명령어로 rsa 알고리즘으로 된 key를 생성합니다.
mkdir .ssh
cd .ssh
ssh-keygen -t rsa -b 4096 -C test-key -f github_jenkins
passphrase를 입력하라고 하는데 enter 키를 눌러서 넘어가도 무관합니다.
생성된 키를 확인해 봅니다.
cat github_jenkins
cat github_jenkins.pub
.pub는 public key고 아무것도 없는건 private key입니다.
2. 깃허브 레포지토리 deploy key 등록 (ssh public key)
자신의 레포지토리로 돌아가서 Security - Deploy Keys - add deploy key를 등록합니다.
cat github_jenkins.pub로 조회한 키값을 Key에 복사해 넣습니다.
===과 같은 문자도 같이 붙여넣어주세요.
잘 등록이 되었습니다.
웬만하면 key이름은 동일하게(github_jenkins) 사용하는게 좋습니다.
3. Jenkins Credentials SSH Key 등록 (ssh private key)
Jenkins에서 웹 훅을 적용할 프로젝트의 Credentials을 다시 등록해야합니다. 구성을 눌러줍니다.
소스 코드 관리에서 Repository URL을 수정해주어야 합니다.
URL이 git@~~~ 이런식으로 되어 있는데 이것은 자신의 깃허브 레포지토리의 ssh URL 입니다
자신의 깃허브 레포지토리에 들어가서 Code - SSH를 복사해서 위처럼 URL을 변경해주셔야 합니다.
그다음 Add를 눌러줍니다.
Kind : SSH Username with private key
Username : 적당히 적어줍니다
조금 밑에 내려보면 Private Key가 있습니다.
Enter directly 클릭 - Key에 [6-2. cat github_jenkins]에서 출력한 내용을 복사해서 붙혀넣습니다.
* 위와 같이 ----으로 되어 있는 부분 전부 복사하셔야 합니다!!
정상적으로 등록이 되면,
그 다음엔 빌드 유발 - GitHub hook trigger for GITScm polling 을 체크해줍니다.
4. Jenkins에서 Github Integration Plugin 설치
Jenkins 관리 - 플러그인 관리 - 설치 가능 - Github Integration Plugin 설치해줍니다
5. Github Repository Webhook 재설정
Repository - Setting - Webhooks에 들어가서 PayloadURL을 수정해줍니다
주소는 젠킨스주소:젠킨스포트/github-webhook/ 입니다.
/github-webhook/ 이 웹 주소는 고정이더군요.
Update webhook을 눌러줍니다.
6. Push 테스트
프로젝트를 적당히 수정한 다음 Push를 해보고 확인해보면 웹훅이 적용된 것을 확인할 수 있습니다.
에러 1. SSH 허용 문제
AWS EC2를 사용하면서 허용하고 싶은 아이피만 인바운드 규칙을 허용하다 보니까 이 웹훅을 거는데 연결이 안되는 문제가 발생했었습니다.
인바운드 규칙 문제가 아닌가 싶어서 잠깐 동안 EC2의 SSH / 8081포트(Jenkins포트)를 전부 허용했더니 정상적으로 작동되더군요.
그래서 Github측의 아이피만 허용하고 싶었기 때문에 Github의 아이피는 뭐지??? 하고 찾아보다가
저 140으로 시작하는게 github 주소겠다 싶어서 140.82.115.0/22를 ssh와 8081포트를 열었더니 웹훅이 잘 작동 되었습니다.
각자의 레포지토리에 접근하는 깃허브측 아이피는 다를수가 있으니 jenkins hook log로 확인해보시면 됩니다.
에러 2. stderr: Load key "~~~~.key": invalid format
젠킨스를 한번 날려먹은 적이 있어서, 위 포스트를 참고해서 따라해봤는데 에러가 발생하더군요.
깃허브 측에 public key, 젠킨스 측에 private key로 웹 훅을 설정하는 과정에서
젠킨스 측의 private key를 입력하는데 Permission denied가 발생하더라구요.
invalid format이라고 해서 뭐지?? ssh 키 발급 문제인가... 뭐지 싶었는데
---- BEGIN RSA PRIVATE ~~~~부터 -----END RSA PRIVATE KEY ----- 까지 전부 복사하셔서 붙혀넣으셔야 합니다...ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이거 때문에 3시간 날려먹었네요 ㅠ
'Backend&Devops > Jenkins' 카테고리의 다른 글
[Jenkins] Linux EC2에서 Jenkins 설치하기(Java 11버전 설치) (3) | 2022.09.23 |
---|---|
[Jenkins] ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. 오류 해결 (0) | 2022.06.03 |
[Jenkins] 젠킨스와 깃허브 연동(GitHub Web Hook) (2) (0) | 2022.03.23 |
[Jenkins] 젠킨스와 깃허브 연동(GitHub Web Hook) (1) | 2021.12.14 |
[Jenkins] 젠킨스란? (0) | 2021.08.20 |