Today I Learned
https://sogummi.tistory.com/170
내일배움 캠프 TIL 77일차 - 젠킨스로 CI/CD 배포 환경 구축하기 01
Docker란? Docker는 컨테이너화된 애플리케이션 구축, 배포 및 실행을 위한 플랫폼 Docker는 컨테이너 엔진으로 리눅스 커널 기능을 사용하여 운영 체제 위에 컨테이너를 만들고, Docker 자체는 서비스
sogummi.tistory.com
↑ 젠킨스 CI/CD 배포 첫 번째 포스팅
- 비밀번호 입력 후 플러그인을 커스텀할 수 있는 창이 나오는데
젠킨스 기본값 플러그인인 Install suggested plugins로 설치 진행


- 플러그인 설치가 완료되면 새 Admin User 생성 (ID와 비밀번호는 잊지 않게 주의하자)

- 플러그인 설치가 실패한 경우 구버전의 젠킨스가 설치됐을 가능성이 높다
putty로 접속한 터미널로 가서 젠킨스 버전을 직접 업데이트 해주어야한다.

1) ps -ef | grep jenkins
- 위 커맨드를 입력해 Jenkins.war의 위치를 파악하면
/user/share/jenkins/jenkins.war 경로에 있는 것을 알 수 있음

2) service jenkins stop : 젠킨스 서버 중지
서버 중지 후 버전을 수동 업데이트 하려했지만 여기서도 문제가 발생하였음
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to stop 'jenkins.service'.
Authenticating as: Ubuntu (ubuntu)
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
=> 나같은 경우 root 계정의 비밀번호를 설정해주지 않은 것이 문제라고 생각해서
sudo passwd root 커맨드로 새로운 비밀번호를 생성하고 다시 비밀번호를 기입하였으나
See system logs and 'systemctl status jenkins.service' for details. 메세지가 떠서
systemctl status jenkins.service 커맨드를 입력하니,
Unit jenkins.service could not be found. 라는 메세지가 떴다.
* 시도
1) 이전과 다른 명령어를 입력한 부분은(기록용으로 한 번 다시 배포한 것) 이전에는 upgrade 커맨드를 입력하지 않았고,
이번은 sudo apt-get update 후 sudo apt-get uprade를 입력했던 점.. 때문에 버전 오류일까 생각했다.
그래서 다시 sudo apt-get update를 입력하니,
W: Failed to fetch http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease 503 Service Unavailable [IP: 52.79.128.16 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.
다음과 같은 에러가 떴다.
2) apt를 정리해야하고 다시 update를 해야할 것 같았다.
sudo rm -rf /var/lib/apt/lists/* -vf
3) 우분투 패키지 정리 후 다시 update 커맨드를 입력해주니
Reading package lists... Done
이 뜨면서 업뎃이 잘 되었음 + 플러그인설치도 재시도 하니 정상적으로 모두 설치되었다!
=> putty로 접속한 터미널로 가서 젠킨스 버전을 직접 업데이트 해줄 필요없이 패키지 정리 후 update를 입력하니 플러그인 설치가 잘 되었다.. ㅋㅋ
- Admin User 새로 생성해주고 ~ Instance Configuration창도 그냥 Save and Finish 눌러주자
<Jenkins + Github 연동 >
1. 젠킨스가 설치된 EC2에서 ssh-keygen을 통해 key 생성
*****ssh 키 값의 경로가 젠킨스가 만들어진 경로가 아니라 로컬 경로에서 만들면 build fail 당함 (fail remote origin 등....)
sudo docker exec -it [Container id 앞글자]/bin/bash
또는
sudo docker exec -i -t [Container id 앞글자]/bin/bash
**********
ssh-keygen -t rsa 커맨드 입력
Enter를 눌러서 세번 정도 넘기면 The key's randomart image is:하고 네모난 박스에 랜덤 이미지가 뜬다.
cat /home/ubuntu/.ssh/id_rsa 입력
=> 결과 값
-----BEGIN OPENSSH PRIVATE KEY-----
[장문의 키값]
-----END OPENSSH PRIVATE KEY-----
여기서 BEGIN과 END까지 모두 복사해주자!
2. 젠킨스 Dashboard > Jenkins관리 > Credentials > Domains의 (global) 클릭
> Global credentials(unrestricted) > New credentials
- Kind에서 SSH Username with private key 선택
- ID 는 원하는 ID
- private key - Enter directily 선택하여서 아까 복사한 ssh키 값 붙여넣기

3. 깃허브 Deploy keys 추가하기
리포지토리 Settings - Deploy keys - Add deploy key 추가하고 Key 내용에
cat /home/ubuntu/.ssh/id_rsa.pub 커맨드 입력하고 출력된 내용 입력 (RSA 키의 public key)


4. Webhook 추가하기
아래 사진과 같이 [젠킨스 주소]/github-webhook/ 형식으로 입력해주고 Add

5. 젠킨스로 돌아와서,
대시보드에서 배포 프로젝트 클릭 > 구성(General) > 소스 코드 관리 > git 선택 > Repository URL란에 리포지토리 SSH 주소 복사붙여넣기 > credential 선택 > Branches to build에서 master브랜치가 아닌 main으로 되어있다면 */main과 같이 변경해주면 됨 > 빌드 유발에서 GitHub hook trigger for GITScm polling 선택


'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움 캠프 TIL 80일차 - seattr(), getattr(), hasattr() (0) | 2023.07.03 |
---|---|
내일배움 캠프 TIL 79일차 (0) | 2023.07.03 |
내일배움 캠프 TIL 77일차 - 젠킨스로 CI/CD 배포 환경 구축하기 01 (0) | 2023.07.03 |
내일배움캠프 TIL 76일차 - KPT 중간 발표 회고록 (0) | 2023.06.26 |
내일배움캠프 TIL 75일차 (0) | 2023.06.25 |
Today I Learned
https://sogummi.tistory.com/170
내일배움 캠프 TIL 77일차 - 젠킨스로 CI/CD 배포 환경 구축하기 01
Docker란? Docker는 컨테이너화된 애플리케이션 구축, 배포 및 실행을 위한 플랫폼 Docker는 컨테이너 엔진으로 리눅스 커널 기능을 사용하여 운영 체제 위에 컨테이너를 만들고, Docker 자체는 서비스
sogummi.tistory.com
↑ 젠킨스 CI/CD 배포 첫 번째 포스팅
- 비밀번호 입력 후 플러그인을 커스텀할 수 있는 창이 나오는데
젠킨스 기본값 플러그인인 Install suggested plugins로 설치 진행


- 플러그인 설치가 완료되면 새 Admin User 생성 (ID와 비밀번호는 잊지 않게 주의하자)

- 플러그인 설치가 실패한 경우 구버전의 젠킨스가 설치됐을 가능성이 높다
putty로 접속한 터미널로 가서 젠킨스 버전을 직접 업데이트 해주어야한다.

1) ps -ef | grep jenkins
- 위 커맨드를 입력해 Jenkins.war의 위치를 파악하면
/user/share/jenkins/jenkins.war 경로에 있는 것을 알 수 있음

2) service jenkins stop : 젠킨스 서버 중지
서버 중지 후 버전을 수동 업데이트 하려했지만 여기서도 문제가 발생하였음
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to stop 'jenkins.service'.
Authenticating as: Ubuntu (ubuntu)
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
=> 나같은 경우 root 계정의 비밀번호를 설정해주지 않은 것이 문제라고 생각해서
sudo passwd root 커맨드로 새로운 비밀번호를 생성하고 다시 비밀번호를 기입하였으나
See system logs and 'systemctl status jenkins.service' for details. 메세지가 떠서
systemctl status jenkins.service 커맨드를 입력하니,
Unit jenkins.service could not be found. 라는 메세지가 떴다.
* 시도
1) 이전과 다른 명령어를 입력한 부분은(기록용으로 한 번 다시 배포한 것) 이전에는 upgrade 커맨드를 입력하지 않았고,
이번은 sudo apt-get update 후 sudo apt-get uprade를 입력했던 점.. 때문에 버전 오류일까 생각했다.
그래서 다시 sudo apt-get update를 입력하니,
W: Failed to fetch http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease 503 Service Unavailable [IP: 52.79.128.16 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.
다음과 같은 에러가 떴다.
2) apt를 정리해야하고 다시 update를 해야할 것 같았다.
sudo rm -rf /var/lib/apt/lists/* -vf
3) 우분투 패키지 정리 후 다시 update 커맨드를 입력해주니
Reading package lists... Done
이 뜨면서 업뎃이 잘 되었음 + 플러그인설치도 재시도 하니 정상적으로 모두 설치되었다!
=> putty로 접속한 터미널로 가서 젠킨스 버전을 직접 업데이트 해줄 필요없이 패키지 정리 후 update를 입력하니 플러그인 설치가 잘 되었다.. ㅋㅋ
- Admin User 새로 생성해주고 ~ Instance Configuration창도 그냥 Save and Finish 눌러주자
<Jenkins + Github 연동 >
1. 젠킨스가 설치된 EC2에서 ssh-keygen을 통해 key 생성
*****ssh 키 값의 경로가 젠킨스가 만들어진 경로가 아니라 로컬 경로에서 만들면 build fail 당함 (fail remote origin 등....)
sudo docker exec -it [Container id 앞글자]/bin/bash
또는
sudo docker exec -i -t [Container id 앞글자]/bin/bash
**********
ssh-keygen -t rsa 커맨드 입력
Enter를 눌러서 세번 정도 넘기면 The key's randomart image is:하고 네모난 박스에 랜덤 이미지가 뜬다.
cat /home/ubuntu/.ssh/id_rsa 입력
=> 결과 값
-----BEGIN OPENSSH PRIVATE KEY-----
[장문의 키값]
-----END OPENSSH PRIVATE KEY-----
여기서 BEGIN과 END까지 모두 복사해주자!
2. 젠킨스 Dashboard > Jenkins관리 > Credentials > Domains의 (global) 클릭
> Global credentials(unrestricted) > New credentials
- Kind에서 SSH Username with private key 선택
- ID 는 원하는 ID
- private key - Enter directily 선택하여서 아까 복사한 ssh키 값 붙여넣기

3. 깃허브 Deploy keys 추가하기
리포지토리 Settings - Deploy keys - Add deploy key 추가하고 Key 내용에
cat /home/ubuntu/.ssh/id_rsa.pub 커맨드 입력하고 출력된 내용 입력 (RSA 키의 public key)


4. Webhook 추가하기
아래 사진과 같이 [젠킨스 주소]/github-webhook/ 형식으로 입력해주고 Add

5. 젠킨스로 돌아와서,
대시보드에서 배포 프로젝트 클릭 > 구성(General) > 소스 코드 관리 > git 선택 > Repository URL란에 리포지토리 SSH 주소 복사붙여넣기 > credential 선택 > Branches to build에서 master브랜치가 아닌 main으로 되어있다면 */main과 같이 변경해주면 됨 > 빌드 유발에서 GitHub hook trigger for GITScm polling 선택


'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움 캠프 TIL 80일차 - seattr(), getattr(), hasattr() (0) | 2023.07.03 |
---|---|
내일배움 캠프 TIL 79일차 (0) | 2023.07.03 |
내일배움 캠프 TIL 77일차 - 젠킨스로 CI/CD 배포 환경 구축하기 01 (0) | 2023.07.03 |
내일배움캠프 TIL 76일차 - KPT 중간 발표 회고록 (0) | 2023.06.26 |
내일배움캠프 TIL 75일차 (0) | 2023.06.25 |