1. 사전작업
Local Git Repository가 생성되어 있는 것을 가정한다.
관련 내용은 Git Local Repository (로컬 저장소) 생성을 참고한다.
2. Github Repository 생성
이 부분은 각자 알아서 한다.
3. Repository 연결
$ git remote add origin https://github.com/xxxxx/restest-server.git $ git remote -v origin https://github.com/xxxxx/restest-server.git (fetch) origin https://github.com/xxxxx/restest-server.git (push)
4. git push
이제 remote로 git push
한다.
$ git push origin master
Username for 'https://github.com': xxxxx
Password for 'https://이 이메일 주소가 스팸봇으로부터 보호됩니다. 확인하려면 자바스크립트 활성화가 필요합니다.':
To https://github.com/xxxxx/restest-server.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xxxxx/restest-server.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
이 에러가 나는 이유는 각자 찾아보고, 우선 다음과 같이 git pull
을 수행한다.
$ git pull origin master --allow-unrelated-histories warning: no common commits remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (2/2), done. remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), done. From https://github.com/xxxxx/restest-server * branch master -> FETCH_HEAD * [new branch] master -> origin/master Merge made by the 'recursive' strategy. README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md
이제 다시 git push
한다.
git push origin master Enumerating objects: 31, done. Counting objects: 100% (31/31), done. Delta compression using up to 4 threads Compressing objects: 100% (19/19), done. Writing objects: 100% (30/30), 50.34 KiB | 12.59 MiB/s, done. Total 30 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), done. To https://github.com/xxxxx/restest-server.git fc3d061..7040689 master -> master
그러면 Github Repository 상에 commit된 것을 볼 수 있다.
5. Jenkins 설정
5.1. [새로운 Item] 생성
-
GitHub project 체크, Project url에는 Github project 주소 (.git 붙이지 않음) 입력
예: https://github.com/xxxxx/restest-server -
소스 코드 관리는 Git 체크, Repositories의 URL은 Github project 주소를 넣되 .git 추가함
예: https://github.com/xxxxx/restest-server.git -
소스 코드 관리의 Repositories에서 Credential 생성
1) ID/PW 방식
2) SSH Key 방식 (5.2.로 따로 분류하여 설명)
5.2. SSH Key 방식 설정
$ ssh-keygen -t rsa -f key-jenkins Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in key-jenkins. Your public key has been saved in key-jenkins.pub. The key fingerprint is: (생략)
위와 같이 ssh-keygen -t rsa -f [key 파일 이름]
입력하고 passphrase는 그냥 엔터로 넘어간다.
그러면 파일이 2개 생성되는데 예를 들어 위에처럼 key 파일 이름을 key-jenkins로 줬다면 key-jenkins, key-jenkins.pub 2개 파일이 생성되는 것이다.
- key-jenkins : 로컬에서 사용할 개인키
- key-jenkins.pub : Github에 올릴 공개키
5.1에서 소스 코드 관리 하위의 Credentials에 [Add]를 누른다. 거기서 [Username with password] 방식이 아닌 [SSH username with private key]를 선택한 후 username과 위에서 생성된 개인키(key-jenkins 내용)를 입력한다.
그리고 Github의 해당 Repository 내 Settings로 들어간 후 좌측 메뉴 중 [Deploy keys] 선택 후 [Add deploy key]를 하고 공개키(key-jenkins.pub 내용)를 입력한다.
6. Local - Remote 연결 확인
이렇게 Local - Remote 연결이 잘 되어있는 상태틀 확인하고자 한다면 Jenkins의 해당 프로젝트에서 [Build Now]를 통해 빌드 테스트를 해보면 된다. 하지만 실제 무슨 빌드가 벌어지는 것은 아니라고 할 수 있다.
7. 빌드 설정
Jenkins에서 해당 프로젝트 [구성] 메뉴(좌측 메뉴 중에 있음)로 들어간다.
위와 같은 메뉴에서 [구성]을 말하는 것이다. [구성]에 들어가서 아래쪽의 [Build]를 확인한다.
[Add build step] 후, 그리고 "Invoke top-level Maven targets" 선택 후 아래와 같이 빌드 설정을 추가한다.
그리고 다시 [Build Now]하면 빌드가 진행되며 완료 후 Console Output을 통해 정상적으로 종료되었음을 알 수 있다.
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.679 s [INFO] Finished at: 2019-09-07T23:51:37+09:00 [INFO] ------------------------------------------------------------------------ Finished: SUCCESS
그리고 ~/.jenkins/workspace/restest-server/target에 MyRestServer-0.0.1-SNAPSHOT.jar 파일이 생성되었다.