본 실습은 아래 자료를 바탕으로 진행되었습니다.
https://tomatohj.tistory.com/81
설치된 Jenkins에서 좌측 상단에 있는 '새로운 item' 버튼을 클릭하면 아래와 같은 화면을 볼 수 있다. 여기서 이름을 자유롭게 설정하고 종류는 'Freestyle project'를 선택한 후 OK 버튼을 눌러준다.
이후 소스 코드 관리 부분으로 이동하여 Git을 선택하면 연결할 Repository URL과 Github 인증을 위한 정보를 추가해야 한다.
환경 구성이 이용할 웹 애플리케이션은 WebGoat라는 오픈소스 웹 어플리케이션이므로 'WebGoat' Github 공식 Repository를 확인하여 활용할 수 있다.
📂 WebGoat
최초 로그인 시 WebGoat에 대한 소개 문구가 표시되어있다. WebGoat는 일부러 보안에 취약하도록 만든 자바 기반의 응용 프로그램이라고 한다. 즉, 취약점 테스트를 위해 실제 웹 사이트가 아닌 WebGoat라는 가상의 웹 사이트에 테스트하기 위해 만든 웹 어플리케이션이라고 할 수 있다.
[출처] 실습 환경 구성, https://takudaddy.tistory.com/321
WebGoat Github 내의 코드를 임의로 수정하는 작업이 필요하다. 하지만 공식 Repository에서는 해당 작업이 불가능하므로 이 Repository를 fork하여 자기자신의 Repository로 복사하는 작업을 진행해야 한다.이미 WebGoat라는 Repository를 가지고 있지 않은 이상, 'Create a new fork' 버튼을 눌렀을 때 별도의 이상없이 사용가능함을 알 수 있다.
복사가 완료되었다면 Clone을 위한 HTTPS 주소를 복사한다.
복사한 주소를 아래 'Repository URL' 부분에 넣어주고 Add 버튼을 눌러 'Jenkins Credentials Provider'를 실행시켜주어야 한다.
그럼 아래와 같은 화면을 볼 수 있는데, 여기서 Github ID와 PW를 이용하여 Username과 Password를 입력해도 되지만, Github에서는 Password가 아닌 Access token을 만들어 사용할 것을 권고하고 있기 때문에 이를 반영하여 입력해보자.
Github에서 사용하고 있는 자신의 사용자 이름을 복사하여 'Username' 항목에 넣는다. 그리고 Settings 메뉴의 가장 하단인 'Developer settings' 부분에서 Personal access tokens → Tokens (classic) → Generate new token → Generate new token (classic)을 순서대로 클릭한다.
그럼 이때, 토큰을 생성할 수 있는 페이지를 확인할 수 있는데, Note 부분은 임의로 작성하고 권한은 repo, admin:repo_hook 부분에 대한 권한만 모든 권한을 부여하고 access token을 생성해야 한다.
이렇게 생성된 토큰을 Password 부분에 붙여넣고, Add 버튼을 눌러 Credentials 생성을 마무리할 수 있다.
이후, 생성한 Credential을 선택하고 'Branches to build' 항목에서 어떤 Branch를 빌드할 것인지에 대해 기본적인 설정을 할 수 있다. WebGoat는 master가 아닌 main branch를 사용하므로 main으로 수정한다.
마지막으로 빌드 유발 부분에서 'Github hook trigger for GITScm polling'을 클릭하고 저장하여 설정을 마무리 해준다.
▶ 'Github hook trigger for GITScm polling' 선택 이유
: 구축하려는 DevOps 아키텍처는 Github Repository에서 변경사항이 발생하면 자동으로 Jenkins에서 빌드 및 배포를 진행하는 것을 목표로 하고 있지만, Jenkins를 실행시키는 주체가 Github이기 때문에 해당 항목을 반드시 선택해야한다.
저장 후, '지금 빌드' 버튼을 눌러 정상적으로 Github와 연결되었는지 확인할 수 있다.
버튼을 누르면 젠킨스 페이지 좌측 하단에서 빌드 작업이 진행되고 있는 것을 볼 수 있다.
일정 시간 이후, 아래 이미지와 같이 초록색 체크표시와 함께 빌드가 마무리된 것을 확인할 수 있다.
Jenkins 컨테이너로 돌아와서 "cd /var/lib/jenkins/workspace" 명령어를 통해 Jenkins workspace 경로로 이동한 후, ls 명령어로 Jenkins에서 생성한 devops 프로젝트 디렉토리를 확인할 수 있고 해당 디렉토리 내에 Github Repository 파일이 존재하는 것을 볼 수 있었다. 따라서 Github와 구축한 Jenkins가 잘 연결되었다.
'Cloud > DevSecOps' 카테고리의 다른 글
AWS DevSecOps Service & Tool (0) | 2024.05.04 |
---|---|
[DevOps 구축] Github Webhook 설정, DevOps 구축 완성 (0) | 2024.04.30 |
[DevOps 구축] Blue/Green 웹 서버 + Nginx 리버스 프록시 설정 (0) | 2024.04.29 |
[DevOps 구축] Jenkins 설치 및 초기 설정 (0) | 2024.04.29 |