티스토리 뷰

참고 서적을 이용하여 django를 이용한 웹 개발 후,

책에서 빠져있는 부분과 개인적인 커스텀을 하다보니 CI/CD에 대하여 관심을 갖게 되었습니다.

본 내용은 개인용pc, git, jenkins, docker를 이용하여 구축 합니다.

계속 공부해나가는 중이라 제 상황에 맞게 구성한 것이니,

참고하셔서 도움되셨으면 좋겠습니다.

 

시나리오
항목 내용
네트워크 DDNS를 이용하여 Home IP연결.
GIT SSH key pair 생성 후 SSH public key 등록
Server Docker, Docker-Compose, Jenkins 설치
네트워크 DDNS to Server 포트포워딩
Jenkins Jenkins 접속 및 계정생성, git 연결설정
GIT Web hook 설정 및 테스트
검증 Git pull docker build 테스트
확인 Web site접속 및 동작 테스트

 

DDNS를 이용한 Home Network 설정

이부분은 web hook 설정에 필요합니다. 가정용 인터넷 ip가 고정되어있다면 ip로 넣어도 될것 같습니다.

https://2ster.tistory.com/search/ddns

 

IT_INFRA_MANAGEMENT

 

2ster.tistory.com

 

Git | SSH public key 등록

git과 jenkins에 사용하기위해 SSH keypair를 생성하고 저장합니다.

xshell을 이용한 key 생성 방법예시입니다.

https://2ster.tistory.com/66

 

centos접속_ssh 키인증 접속 방법설정

사용 어플리케이션 : Xshell 도구 > 사용자키 생성 마법사 RSA(비대칭키) (참고, 리눅스는 pem확장자, 윈도우는 ppk확장자로 만들어야함 근데 pub로 되있는데??) 원격 접속 계정 user1 ◇ 클라이언트 작업

2ster.tistory.com

Git hub에 접속하여 계정의 setting에서 SSH and GPG keys 메뉴를 들어갑니다.

New SSH key를 클릭

본인이 식별가능한 Title과 Public Key를 입력하고 저장합니다.

 

※ 위 내용은 전체 적용되는 설정이고, Repository별로 적용하려면 각 Repository에서 설정하면됩니다.

 

잘 저장되었는지 궁금하다면 clone을 HTTPS가 아닌 SSH로 해서 명령을 날려보는 방법도 있습니다...

 

Docker, Docker-Compose, Jenkins 설치

저는 centos7을 사용중이라 이에 맞는 방법을 적용합니다.

아래 공식 사이트내용을 참고하여 설치합니다.

첫번째 링크는 docker, 두번째링크는 docker-compose입니다.

세번째 링크는 정리가 잘되어있는 글 같아 첨부합니다.

 

https://docs.docker.com/engine/install/centos/

 

Install Docker Engine on CentOS

 

docs.docker.com

https://docs.docker.com/compose/install/linux/

 

Install the Compose plugin

 

docs.docker.com

https://jsonobject.tistory.com/532

 

CentOS 7, Docker 및 Docker Compose 설치하기

개요 이번 글에서는 CentOS 7에서 docker, docker-compose를 설치하는 방법을 소개하고자 한다. Docker 설치 docker를 사용하면 운영체제와 독립적인 이미지를 인스턴스로 올려 컨테이너로 작동시킬 수 있다

jsonobject.tistory.com


Jenkins 설치방법입니다.

상세내용은 아래 공식 사이트 링크 참조 바랍니다.

https://www.jenkins.io/doc/book/installing/linux/

https://www.jenkins.io/doc/book/installing/linux/

 

Linux

After downloading, installing and running Jenkins using one of the procedures above (except for installation with Jenkins Operator), the post-installation setup wizard begins. This setup wizard takes you through a few quick "one-off" steps to unlock Jenkin

www.jenkins.io

설치 후 방화벽 설정은 필수 입니다.

# firewall-cmd --permanent --zone=public --add-port=8080/tcp
# firewall-cmd --reload

젠킨스가 설치된 서버의 ip주소와 포트번호로 접속을 시도해봅니다.

최초 접속시 위와 같은 화면이 나오는데 내용 가운데 있는 경로에있는 내용을 확인하여 비밀번호를 입력합니다.

# cat /var/lib/jenkins/secretes/initialAdminPassword

추천 하는 플로그인으로 진행했습니다.

관리자 계정 생성 및 접속 url을 설정하고 접속합니다.

 

DDNS포트포워딩설정

DDNS포트포워딩으로 Jenkins서버로, 외부접속을 도메인으로 가능하도록 설정합니다.

 

git Web hook설정

예시 : http://domain.com:8080/github-webhook/

저장을하고 정상이면 다음과 같이나옵니다.

잘 되는지 확인을위해 git으로 push 테스트를해봅니다.

잘 적용되었다면 등록한 웹훅 클릭하여 RecentDeliveries 리스트도 정상으로 체크되는게 보입니다.

# git add . 
# git commit -m "msg" 
# git push
젠킨스 git연동설정

새로운 Item클릭

 

이름을 입력하고 Freestyle project클릭.

아래 창이나오면 

Project url에는 git프로젝트 주소를 넣어줍니다.

예시 : https://github.com/사용자이름/repository이름/

git Ropository 설정내용입니다.

Repository는 SSH주소로넣어주고

Credentials는 Add를 눌러 SSH Private key를 넣어줍니다. Public키와 다릅니다.

Branch는 저는 main으로 되어있어서 main으로 수정했습니다.

빌드스템 scripts 예시입니다.

저는 git에 push하면 webhook으로 jenkins에 신호가가고 그뒤 서버에서 git pull & docker build 되도록 설정했습니다.

아래와 같이 명령을 보내기위해 jenkins 계정에 sudo 명령이 가능하도록

/etc sudoers파일을 수정했습니다.

#chmod 640 /etc/sudoers
#vim /etc/sudoers

맨 아래 내용 추가 jenkins ALL=(ALL) NOPASSWD: ALL

#chmod 440 /etc/sudoers

Execute shell은 처음 테스트할때는

echo "test"와 같은 간단한 스크립트로 진행합니다.

결과는 Console Output에서 확인가능.

아래 예시 스크립트는

web hook으로 젠킨스가 신호를 받으면

git pull을 실행하고

기존 docker container를 삭제

새로 docker build를 진행합니다.

빌드 스크립트 예시

빌드 테스트를 진행합니다.

 

 

모든 준비가 끝났습니다.

git push를 하면 자동 배포가 진행됩니다.

 

'프로그래밍 학습 > Python' 카테고리의 다른 글

django 3.2 | Custom User 적용  (0) 2024.01.07
python | api request 참고자료  (0) 2023.12.20
python | venv 환경 생성  (1) 2023.11.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함