jenkins 서버 설치하기 위한 인스턴스 생성
OS: ubuntu 20.04
인스턴스 유형: t2.small
인바운드 규칙에서
- ssh 연결을 위한 22번 포트
- jenkins 서버를 위한 50000번 포트, 그리고 8080번 포트 대신 쓸 7676번 포트(jenkins config 파일에서 포트번호 8080 -> 7676으로 바꿔줘야한다.)
- 프로젝트 배포를 위한 7979번 포트
를 일단 모든 IP에 대해 열어둔다.
인스턴스 ssh 접속
ssh -i <key> ubuntu@<public ip>
또는
ssh -i <key> ubuntu@<public ip DNS>
public ip, public DNS 모두 인스턴스 창에서 볼 수 있다.
jenkins 설치
jenkins 설치를 위한 스크립트 작성
#!/bin/bash
apt-get update -y
# openjdk 11 설치
apt-get install -y openjdk-11-jdk
# jenkins 설치 위한 준비
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
sudo apt-get -y update
# jenkins 설치
sudo apt-get -y install jenkins
# jenkins 기본 포트 8080 -> 7676 으로 변경
sed -i s/HTTP_PORT=8080/HTTP_PORT=7676/g /etc/default/jenkins
sed -i s/JENKINS_PORT=8080/JENKINS_PORT=7676/g /usr/lib/systemd/system/jenkins.service
systemctl daemon-reload
systemctl restart jenkins
systemctl enable jenkins
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
jenkins.sh 라는 파일명으로 생성해
chmod +x jenkins.sh
./jenkins.sh
로 쉘 스크립트 파일 실행
jenkins 접속
public-ip:7676
으로 접속하면 jenkins 초기 화면이 뜨는데, 설명에 나와있는대로cat /var/lib/jenkins/secrets/initialAdminPassword
의 결과를 넣어주면 된다.
install suggested plugin
을 선택해서 기본으로 제안되는 플러그인 설치
계정명
암호
이름
이메일
을 넣어주고 다음부터 로그인할 때는 계정명 + 이름으로 접속하면 된다.
새 item 생성
jenkinsfile로 pipeline 만들어줄 것
연결할 git repo 설정
web hook으로 git push 신호 받으려고 하기 때문에 해당 항목 체크
그리고,
pipeline 설정하기 앞서 git repo 연동 및 credential 설정하기 위해 ssh 키 쌍을 jenkins 서버에 만들어준다.
# ssh 키 쌍 저장할 디렉토리 생성
mkdir .ssh
cd .ssh
# 생성
ssh-keygen -t rsa -b 4096 -C test-key -f <키 이름>
그러면
<키 이름>, <키 이름>.pub
이름의 private key, public key를 만들 수 있다.
private key는 jenkins에, public key는 연동할 git repo 설정에서 저장하겠다.
연결할 repo - setting - [security] deploy keys에서
Add deploy key
에서 public key를 등록해주면 된다.
jenkins로 넘어와서 credentials에 ssh private key 등록
id에는 credential 식별할 id,
username은 github username,
private key 항목에 Enter directly 체크해서
바로 private key 등록
다시 item 설정으로 넘어와서, pipeline 항목에 git 연결 부분에서
연결할 git repo url과
방금 만들었던 credentials 설정해주면
에러 메세지가 보이지 않는다면 연결은 성공
하나 주의할 점은
얼마 전 git의 메인, 제일 처음 기본으로 만들어지는 master branch가 main 으로 이름이 바뀌면서 main으로 바꿔줘야 한다.
그리고 Jenkinsfile 로 pipeline 구성해줄 것이기 때문에 지정해준다.
이 Jenkinsfile은 프로젝트와 함께 올릴거다.
그리고 저장 !
github webhook 설정
git push 이벤트가 일어날 때마다 자동 빌드가 되도록 하기 위한 설정
이전과 같이 git repo - setting 으로 들어가면
[code and automation] Webhooks
설정에서 Add webhook 할 수 있다.
payload URL 에는
<jenkins 서버주소>:<포트번호>/github-webhook/
와 같이 정해진 규격으로 넣어줘야 한다.
끝에 꼭 /를 붙여줘야 제대로 hook이 들어간다.
Content type은 application/json 으로 설정 (이유는 아직 모르겠다..)
secret과 밑의 webhook trigger는 따로 설정해주지 않았다.