지난 포스팅들에서는 도커와 젠킨스의 기본 환경 설정을 했다면, 이번 포스팅에서는 실제 파이프라인을 구축해보겠다.
docker start jenkins
docker exec -it jenkins /bin/bash
혹시 젠킨스를 재실행할 상황이 온다면 위 스크립트를 실행하면 된다. (run 명령어는 재설치이므로 유의)
젠킨스와 깃허브 연동
젠킨스의 메인 페이지이다. 왼쪽 네비게이션에서 새로운 item을 클릭해준다.
item name을 적고, Freestyle project를 선택해준다.
이제 상세 설정의 소스 코드 관리 탭에서 Repository URL을 적어주면 되는데,
여기서 한 가지 의문이 든다. 바로 우리 프로젝트의 Repository는 private 레포이기 때문이다.
따라서 gitHub와 Jenkins에 추가적인 설정이 필요하다.
만약 public 레포를 사용하고 있다면 , 다음 설정은 건너뛰어도 된다.
추가 설정(Private Repository인 경우)
Github
먼저 깃허브의 해당 레포 ➡️ settings ➡️ Deploy keys ➡️ Add deploy key를 선택해준다.
ssh key값을 넣어주고, 저장한다.
그러나 위 에러가 발생해 다음 포스팅에 나온 방식으로 해결했다.
Jenkins
메인화면 ➡️ Jenkins 관리 ➡️ Credentials 를 선택한다.
이후 System ➡️Global credentials ➡️ Add Credential을 선택한다.
그러면 위와 같은 입력창이 뜨는데, 각 칸에는 다음 정보를 입력하면 된다.
- Kind : SSH Username with private key 선택
- Scope : Global (Jenkins, nodes, items, all child items, etc)
- ID : 공란으로 두어도 무방
- Description : 공란으로 두어도 무방
- Username : Credential의 식별자
- Private Key : Enter directly 선택 후 생성된 키를 메모장으로 열어 내용을 붙여넣기 (key의 값은 BEGIN RSA PRIVATE KEY로 시작)
Create를 누르면, 위와 같이 Credential이 생성되어있다.
Credential 에러
그러나 credential을 등록해도 위와 같이 stderr: git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository. 에러가 발생할 때가 있다. 이 에러로 며칠을 고생했는데, 이럴 땐 그냥 새로 ssh key를 만들어서, 깃 레포와 젠킨스에 새로 등록해주자. 그러면 해결된다.. 이유는 여전히 알 수 없음.
만약 그래도 안된다면, 젠킨스 서버에 접속해서 다음 명령어를 쳐주고 다시 크레덴셜 키를 등록해보자.
git ls-remote -h {프로젝트 SSH URL} HEAD
그리고 Branches to build에는 build할 브랜치 명을 적어주자.
밑에는 다양한 빌드 관련 옵션들이 존재했는데, 나는 파이썬 프로젝트를 배포할 예정이기에 우선 넘어갔다.
이것과 관련해서는 이후 스프링 프로젝트를 등록할 때에 알아보자.
그렇게 설정을 완료하면, 왼쪽 네비게이션 바에서 지금 빌드를 클릭해 프로젝트를 레포에서 불러온다.
프로젝트를 성공적으로 불러왔다면, 다음 포스팅에서 WebHook과 테스트 후 배포를 설정해보자.
'♾️DevOps > ♾️CI & CD' 카테고리의 다른 글
[CI/CD] - 무중단 배포 with CI/CD 1: nginx + spring 로드 밸런싱 편 (0) | 2024.02.26 |
---|---|
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -4 (도커의 설치부터 자동배포까지) (5) | 2024.01.09 |
[Trouble Shooting] - 젠킨스 빌드 시 error: external filter 'git-lfs filter-process' failed 에러 해결하기 (1) | 2023.12.30 |
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -2 (도커의 설치부터 자동배포까지) (0) | 2023.10.22 |
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -1 (도커의 설치부터 자동배포까지) (0) | 2023.10.21 |