[eGovFramework] Ubuntu 가상머신에 Github, Jenkins 연동하기

EUN JY·2022년 8월 31일
1

eGovFrame

목록 보기
6/6

1. Git Repository에 Push

  • Github에 프로젝트 소스 올리기 위해 Repository 생성
    • Repository 이름 : egovFramework
  • 프로젝트 폴더 우클릭 > Git Bash Here
  • 아래 명령어 입력하여 소스 Pull 및 Push
    • git pull origin main 실행 후, 현재 브랜치가 master로 되어있으면 git checkout main 실행
git config --global user.name "[Github 이름]"
git config --global user.email [Github 이메일]
git init
git remote add origin [Repository 주소]

git pull origin main
git checkout main
git add *
# 삭제한 파일 반영  시, git add –u
git commit -m "[커밋 메세지]"
git push -u origin main

1-1. 브랜치 변경 오류

  • git checkout main 실행 시 아래 오류 발생하는 경우, 폴더 내 README.md 파일 삭제 후 재시도

2. Jenkins 설치

  • Jenkins 저장소 Key 다운로드 후, sources.list.djenkins.list 추가
egov@egov-server:/$ sudo apt-get update
egov@egov-server:/$ sudo apt-get upgrade
egov@egov-server:/$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
egov@egov-server:/$ echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
  • Key 등록 후, apt-get 다시 업데이트
egov@egov-server:/$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
egov@egov-server:/$ sudo apt-get update
egov@egov-server:/$ sudo apt-get upgrade
  • 정상 반영되었는지 확인
egov@egov-server:/etc/apt/sources.list.d$ cd /etc/apt/sources.list.d/
egov@egov-server:/etc/apt/sources.list.d$ vi jenkins.list

  • Jenkins 설치
egov@egov-server:/$ sudo apt-get install jenkins
  • Jenkins 서버 포트 번호 변경 (8090)
    • Tomcat 포트 번호가 8080이기 때문에 Jenkins 포트 번호 변경하였음
egov@egov-server:/$ sudo vi /etc/default/jenkins
egov@egov-server:/$ sudo vi /etc/init.d/jenkins
# /usr/lib/systemd/system/jenkins.service 가 가장 우선되는 설정이므로 변경해주어야 함
egov@egov-server:/$ sudo vi /usr/lib/systemd/system/jenkins.service
# .service 파일 변경 내용을 재등록하기 위함
egov@egov-server:/$ sudo systemctl daemon-reload

  • Jenkins 서비스 재기동 및 상태 확인
egov@egov-server:/$ sudo service jenkins restart
egov@egov-server:/$ sudo systemctl status jenkins

  • Jenkins 초기 비밀번호 확인
    • VM egovSample04 Jenkins 비밀번호 : a8f841001ac449139f02b1fe9f7c194c
egov@egov-server:/$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

2-1. Jenkins 설치 시 오류 해결

  • E: Package 'jenkins' has no installation candidate : 아래 명령어 입력 후 다시 install
egov@egov-server:/$ sudo apt-get update
egov@egov-server:/$ sudo apt-get upgrade

3. Jenkins 실행

3-1. Jenkins 실행 시 오류 해결

  • 창이 뜨지 않을 시 아래 명령어 실행
  • Jenkins 서비스 재기동 및 상태 확인
egov@egov-server:/$ sudo service jenkins restart
egov@egov-server:/$ sudo systemctl status jenkins
  • 방화벽 설정 확인 및 포트 번호 추가 (sudo ufw status 결과, Status가 inactive로 나오거나 8090 포트가 없을 경우)
egov@egov-server:/$ sudo ufw status
egov@egov-server:/$ sudo ufw enable
egov@egov-server:/$ sudo ufw allow 8090

3-2. Jenkins 실행 관련 참고

  • Jenkins 기본 설정 파일 확인
egov@egov-server:/$ vi /etc/default/jenkins
  • Jenkins 로그 파일 확인
egov@egov-server:/$ tail –f /var/log/jenkins/jenkins.log
  • Jenkins 시작 및 정지
egov@egov-server:/$ sudo service jenkins start
egov@egov-server:/$ sudo service jenkins stop

4. Jenkins 시작하기

  • http://192.168.56.109:8090/ 접속 > 2번에서 확인한 비밀번호 입력 > Continue
  • Install suggested plugins 선택하여 설치
  • 설치 중인 화면 확인
  • 설치 완료 후, Admin 계정 생성을 위한 정보 입력
    • 계정명 : egov
    • 암호 : 1111
    • 이름 : egov
    • 이메일 주소 : egov@gmail.com
  • Jenkins URL은 기본값으로 설정 > Save and Finish > Start using Jenkins
  • Jenkins 메인 화면 확인

5. Jenkins 설정

  • Maven 빌드를 위한 추가 설정 필요
  • Jenkins 관리 > Global Tool Configuration > JDK와 Maven 설정
    • JDK > JAVA_HOME 값은 /usr/lib/jvm/java-11-openjdk-amd64
    • Maven > Add Maven > MAVEN_HOME 값은 /usr/share/maven

6. Github와 Jenkins 연동

  • ssh-keygen을 통해 rsa 타입, 4096 비트의 key 생성
egov@egov-server:~$ sudo ssh-keygen –t rsa –b 4096
  • 만들어진 key 확인 > id_rsa, id_rsa.pub가 생성됨
    • Enter file in which to save the key : 키 생성 위치 지정 (엔터만 입력 시 기본 위치인 ~/.ssh에 생성됨)
    • Enter passphrase : 키에 접근할 때마다 암호를 요구하려면 입력 후 엔터 (엔터만 입력 시 암호 요구하지 않도록 함)
  • id_rsa의 key 출력하여 복사
egov@egov-server:/$ cd /home/egov/.ssh
egov@egov-server:~/.ssh$ cat /home/egov/.ssh/id_rsa

  • Jenkins 관리 > Manage Credentials > Jenkins > Global credentials (unrestricted)
  • Add Credentials
  • 아래와 같이 설정 > Create
    • Kind : SSH Username with private key
    • Scope : Global (Jenkins, nodes, items, all child items, etc)
    • Private Key : Enter directly 선택 후 복사했던 key 값 입력

6-1. 연동을 위한 Github 설정

  • Github > 프로젝트 Repository 선택 > Settings > Deploy keys > Add deploy key
  • id_rsa.pub key 출력하여 복사
egov@egov-server:/$ cd /home/egov/.ssh
egov@egov-server:~/.ssh$ cat /home/egov/.ssh/id_rsa.pub

# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDB8wHD5hmDMGHu8wme29upL7RsAO3A7Xzl3SKo4cyZubaeUd50gzt60HYhyoXz399MxUr56DaWU4cc2TzauNtqnqhaO+g6e0yyC5iQSNOg8N8pY238SepyRF7fmPNuiyG01yDSKfm4JZJKhBojGR1xoXGvnOj46plDKHsDebTo5RQg6y+3H0lKc+AnZcIHGfDkpFGJwHWSQIZlLyu+NRoNl1Zp5N/4C0xsI0ljqQxeuPvrFTA6twf2NQPjsqog4hc6enn9k6SDUJJ/RpgebHAyCwFx/xGub4esLFsfIHUpnsel+hkdTVjq4tFRH+lbSoJBCw5YTjjVZ+GhOyVhBzaYId2poBiQKAz/PfedeUjBGAtxF0ahH4tgj04XW2Gnk+8aKJD+Ne0Ey+iJPHZDg0GuL+w5pgidZlD1UUSHVomhJX56PzAmf3xUz4kT8wuJrEZStIvtH78/wwBV3K2hOMeKIv9JBiTsW3EVkjIHDEuI/s3xCU4qgpODOG38E/ho0+chJenhzev+sj0kybFxoRgQ+IIKiqtFwKF0atHXDkeiCt/wxPhUo/5X90mYUE9F3Ys0GyLWkxFPVPw17hSE8asz4LjY6iNcPUhL03q8a3yF7B/OIDL5XzJuLx/8n7S2mwLvSI7Jj/05/RzLdbT3agtwmSSBJKS2Gn6/g16gIw2ygQ== egov@egov-server
  • Deploy key 아래와 같이 설정 > Add key
  • Github > 프로젝트 Repository 선택 > Settings > Webhooks > Add webhook
  • Webhook 아래와 같이 설정 > Add webhook
    • payload URL : http://[JENKINS URL]:[PORT]/github-webhook/

7. Jenkins에 Item 생성

  • Jenkins > 새로운 Item > 이름 입력 및 Freestyle project 선택 > OK
    • Enter an item name : govSample01
  • 소스 코드 관리 > Git 선택 > 아래와 같이 정보 입력
    • Repository URL : https://github.com/ynjch97/egovFramework.git
    • Credentials : Github
  • 빌드 유발 > GitHub hook trigger for GITScm polling 선택 (Github에 push 이벤트가 오면 자동 실행되도록 함)
  • Build > Add build step > Invoke top-level Maven targets
    • Maven Version : mvn-3.6.3
    • Goals : clean package
  • 저장

7-1. Jenkins 빌드 테스트

  • Jenkins에 생성한 Item egovSample01 빌드 테스트
  • 테스트를 위해 index.jsp 소스 수정하여 Github에 Commit
  • VM 서버의 파일은 현재 <p>Jenkins 빌드 테스트</p> 코드가 없는 상태
egov@egov-server:/$ cd /home/egov/tomcat/tomcat-9.0/webapps/sample
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample$ vi index.jsp

[TODO] 7-1번까지 내용 수행 후 할 일

profile
개린이

0개의 댓글