Jenkins 설치 (By Docker)
- 처음 lts와 2.176.2 설치했었는데, 버전 문제인지 플러그인 설치 실패 계속 되었음
- docker hub에서 2.413-jdk11버전으로 받으니 플러그인 정상 설치 확인
# docker image 검색
$ docker search jenkins
# image 다운로드
$ docker pull jenkins/jenkins:2.413-jdk11
# image 확인
$ docker images
# 설치
$ docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -u root jenkins/jenkins:2.413-jdk11
# container 터미널 접속
$ docker exec -it jenkins /bin/bash
# container 명령어
$ docker restart {컨테이너명}
$ docker start {컨테이너명}
$ docker stop {컨테이너명}
# container 삭제
$ docker rm {컨테이너명}
# image 삭제
$ docker rmi {이미지명}
jenkins 설치를 잘못하여 다시 삭제 하실 경우 container > image > mount folder 삭제 하면 됨
mount folder의 경우 docker run 실행 옵션 중 -v {로컬 경로}:{container 경로} 에서 {로컬 경로} 폴더 삭제
Jenkins 접속 및 초기 패스워드 입력
접속 주소 : http://localhost:8080
초기 패스워드의 경우
(1) mount 설정시 로컬 디렉토리 경로에서 확인
(2) container 터미널 접속하여 확인
# jenkins container 접속
$ docker exec -it jenkins /bin/bash
# 초기 비밀번호 확인
$ cat /var/jenkins_home/secrets/initialAdminPassword
신규 사용자 추가
관리자와 사용자 계정 분리
Dashboard > Jenkins 관리 > Security > Users > Create User
유저별 권한 설정
관리자와 사용자 권한을 분리하여 관리하도록 함
Dashboard > Jenkins 관리 > Security > Authentication
Ngrok 설치
- GitHub에서 로컬 Jenkins를 연동하기 위해선 도메인 주소가 필요
- http://localhost:8080 등록 할 경우 github 서버의 localhost 를 찾아가기 때문에 로컬 jenkins 찾을 수 없음
- Ngrok을 사용하게 되면 로컬 프로세스 port에 접속 가능한 임시 도메인을 발급 가능 (무료/유료)
Ubuntu/Linux 경우
$ curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
추가적으로 authtoken을 발급해서 등록해야 한다. authtoken 발급은 공식 사이트에서 회원가입 후 MFA 보안 설정 까지 완료하면 발급이 된다.
authtoken 등록하지 않을 경우 | authtoken 등록한 경우 |
만료 8시간 | 만료 시간 X |
유료 플랜의 경우 도메인이 고정되는데, 로컬 테스트 용도로만 활용하기 때문에 무료 플랜으로 진행
authtoken 등록 & ngrok 실행
$ ngrok config add-authtoken <token>
$ ngrok http <port>
발급받은 Jenkins 접속 도메인 주소를 GitHub에 등록
ngrok 재시작시 도메인 변경되므로 github에 등록한 jenkins 주소를 변경해줘야 한다
GitHub 로그인 > 해당 Repository > Setting 탭 > 좌측 메뉴 중 Webhooks
GitHub & Jenkins 연결
GitHub나 로컬 Jenkins나 서로에게 필요한 정보(주소, 토큰 등)가 있어야 연결이 가능하다
포스팅에서는 특정 repository 키를 발급받아 jenkins에 등록하는 방식으로 설명했는데,
반대로 jenkins 서버의 키를 깃허브에 등록하는 방법도 있었다.
GitHub
(1) Personal Access Token 발급 - 로컬 Jenkins에 등록
메뉴 경로
GitHub Profile > Setting > 좌측 맨 아래 Developer Settings > Personal access tokens > Tokens(classic)
아래 두 항목을 체크
- repo
- admin:repo_hook
저장하게 되면 아래와 같이 토큰 발급된다 (해당 토큰을 Jenkins Credential 등록함)
(2) Webhooks 등록 - 로컬 Jenkins 연결 도메인 주소 등록하여 hook을 걸어줌
메뉴 경로
GitHub 개인 프로젝트 > Settings 탭 > 좌측 Webhooks
Jenkins 도메인 주소 뒤에 /github-webhook/ 를 꼭 붙이도록 한다
(Jenkins Webhook URL 주소인듯 하며, branch push 발생하면 해당 URL로 event hook 을 걸어주는 듯하다)
Jenkins
Git Plugin, GitHub Plugin 이 설치 되어 있어야 한다
(1) 신규 Item 추가 & Repository & Credential 등록
- Jenkins 접속 후 좌측 상단에 "새로운 Item" 클릭
- item명 입력, Freestyle project 선택 후 저장
Git, GitHub 플러그인이 올바르게 설치되어 있으면 "소스 코드 관리"에 Git 항목이 출력된다.
저장소 URL 입력 (Http 주소 형식)
Credentials 아래에 Add (추가) 눌러서 발급 받은 토큰 등록
Kind : Username with password 선택 (secret text는 동작 안함*)
Username : GitHub 로그인 아이디 입력
Password : 위에서 발급받은 해당 저장소의 personal access token 입력
ID : 적당히 입력
(2) 테스트
master branch로 push 한다
오옷 반응이 와버렸어 !
다음은 포스팅에서 Docker Container 하나 더 올려서 프로젝트를 배포하도록 한다.
참고
https://github.com/jojoldu/springboot-jenkins-docker-slack
https://www.blazemeter.com/blog/how-to-integrate-your-github-repository-to-your-jenkins-project
'공부 > DevOps' 카테고리의 다른 글
[Docker] Container SSH key 접속, scp 명령어로 파일 전송 (3) (0) | 2023.07.15 |
---|---|
[Docker] Container IP 확인 및 SSH 접속하기 (2) (0) | 2023.07.14 |
[Docker] MySQL 5.7 설치 및 데이터 import (0) | 2023.04.11 |
[oh-my-zsh] help command not found (0) | 2023.01.08 |
[oh my zsh ] git 사용시 index refreshing 되는 이슈 (0) | 2022.06.08 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!