이전 포스팅에 nginx 설치 및 설정에 이어서 진행된 내용입니다.
docker compose - nginx 설치 및 설정 (tistory.com)
- docker-compose.yml
#version: '2'
name: jenkins
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
environment:
- TZ=Asia/Seoul
ports:
- 9090:8080
volumes:
- /dkr/jenkins/config:/var/jenkins_home
- /dkr/pt-springboot/config:/pt-springboot/build #springboot build 파일 경로 설정
user: root
restart: always
앞에 포스팅(docker compose - nginx 설치 및 설정 (tistory.com))에서 nginx 설정으로 jenkins.test.com으로 접속할 수 있게 설정해 두었다.
- 초기 비밀번호
docker logs [컨테이너명]
로그에서 초기 비밀번호가 나오게 된다.
또는 /var/jenkins_home/secrets/initialAdminPassword 파일을 열어보면 초기 비밀번호가 나온다.
비밀번호를 입력하고, [Continue] 클릭.
- plugin 설치
Install suggested plugins - 자동으로 가장 많이 사용하는 것들로 설치된다.
Select plugins to install - 필요한 plugin만 선택해서 설치할 수 있다.
보통은 첫 번째(Install suggested plugins)로 많이 진행한다.
저는 필요한 것만 설치하고 싶어서 두 번째(Select plugins to install)로 진행했습니다.
[All | None | Suggested] 중에서 [None]을 클릭해서 선택된 내용을 지웁니다.
일단, 생각나는 것은 git, gradle, nodejs 정도 선택해서 설치를 진행합니다.
처음 설정에 plugin을 다 설치 못하더라도, 초기 설정이 끝나고 plugin을 관리할 수 있습니다.
선택 후 [Install]을 진행합니다.
- 접속 계정
접속 계정에 대한 아이디, 비밀번호 입력하고 [Save and Continue] 클릭
여기까지 젠킨스 설치 끝.
- 필요 플러그인에 대해서..
git - github 연동
gradle - springboot 빌드
nodeJS - vue 빌드
publish over SSH - 원격 AP서버가 있다면, ssh 접속으로 빌드 후 해당 서버로 배포할 수 있다.
post build task - 빌드 완료 후 빌드 로그의 메시지를 통해서 스크립트를 실행할 수 있다.
- publish over SSH / post build task 추가 설치
필요한 플러그인을 선택하고 install을 한다.
- Git 연동을 위한 아이디/비번 등록
Add credentials 선택한다.
Username: 깃허브 아이디
Password: 깃허브 비밀번호
ID: 사용할 아이디
Description: 설명 내용
해당 정보를 입력한다.
- Gradle / nodeJS 설정
Gradle / NodeJs 영역이 보인다.
해당 화면에서 Gradle installations / NodeJS installations에 Add Gradle / Add NodeJS를 눌러서 사용할 버전과 이름을 넣고 저장한다.
여기까지 내가 필요한 설정은 다 넣은 듯하다.
GitHub에서 소스를 받아야 되니, Git 아이디 등록.
그리고 빌드해야 되니, Gradle / Node 빌드 버전 등록.
기본 설정 끝.
- New 아이템 / 프로젝트 생성
item name - 본인이 원하는 프로젝트명으로 입력하면 된다.
그리고 Freestyle project 선택.
- 소스 코드 관리
일단 깃허브의 소스를 받아야 되니깐, Repository URL을 복사한다.
Repository URL, Credentials를 선택하니, 접속 실패라고 뜬다.
- returned status code 128
구글링을 하면 많은 내용들이 있다. 하지만 명확한 답들은 안 보인다.
일단 명확히 확인되는 부분은 Repository가 public, private 문제로 파악이 되었다.
public repository 같은 경우는 아이디/비번으로 접속이 되지만,
private repository 같은 경우는 access token을 생성해서 사용해야 된다.
- 해결방법
1. 깃허브 오른쪽 상단에 내 아이콘을 클릭해서, [Settings]를 클릭한다.
2. Settings화면이 열리고, 왼쪽 가장 하단 메뉴에 [Developer settings]를 선택한다.
3. Personal access tokens - Tokens (classic)을 선택하고, 오른쪽 상단 [Generate new token]을 클릭한다.
4. New personal access token (classic)
- Note : 토큰 이름
- Expiration : 만료일 선택
- Select scopes : 토큰의 권한
토큰의 권한은 OAuth 앱에 대한 범위 - GitHub Docs에 명시되어 있다.
일단, repo 만 줘도 될듯해서, repo 선택하고 생성한다.
생성된 토큰을 복사하고, 다시 jenkins로 와서 비밀번호에 토큰을 넣어준다.
연결이 되었다.
그리고 Branch를 확인하고,
- Build Steps
springboot gradle 프로젝트 소스이니, [Invoke Gradle script] 선택한다.
- Gradle Version : 앞에서 설정한 gradle을 선택
- Tasks : bootJar
jar 배포 파일을 만들거니, bootJar
- 빌드 후 조치
빌드가 성공하면, docker의 volume을 잡아둔, 위치로 복사한다.
여기서 알아야 되는 것은,
jenkins 빌드 경로이다.
/var/jenkins_home/workspace/[jenkins_item명]가 기본 경로가 된다.
build/libs라고 하면 절대경로는 /var/jenkins_home/workspace/[jenkins_item명]/build/libs 가 되는 것이다.
이제 저장하고 빌드 실행.
아...........................................................
AWS EC2인스턴스에서 무료 티어일 경우에, 빌드가 성능이 안된다. ㅎ
엄청 느려서, 콘솔 접속도 안 되는 상황. ㅎ
급히, 포스팅 검증 겸 로컬 WSL에 nginx, jenkins 설치 및 설정하고 계속 진행하기로 했다.
AWS 무료 티어 EC2는 웹서버용으로만 사용해야 할 듯하다.
빌드 후 조치에서 로컬에 배포파일이 떨어지게 했지만,
AWS EC2 인스턴스로 배포하는 것이 필요하다.
- SSH Server 설정
Publish over SSH 영역에서 하단에 SSH Servers에 추가 버튼을 클릭한다.
이름, 호스트아이피, 계정명을 넣고, pem 파일의 프라이빗 키값을 넣어준다.
그리고 jenkins Item - 구성으로 와서, 빌드 후 조치 부분에 추가한다.
Send build artifacts over SSH를 선택한다.
Source files, Remove prefix, Remote directory, Exec command를 입력한다.
Source files: 소스 파일들
Remove prefix: 삭제할 앞부분 영역?, 문자?
Remote directory: 원격 서버의 업로드할 디렉토리
Exec command: 업로드 후 원격 서버의 실행 명령어
그리고 빌드
빌드 로그를 보면, BUILD SUCCESSFUL 문자 매치과 되어서,
복사 스크립트가 실행되었고,
SSH로 원격 서버 접속 후 파일 1개가 전송된 것으로 나온다.
- AWS EC2 인스턴스 서버
pt-springboot-0.0.1-SNAPSHOT.jar 파일이 들어온 것을 볼 수 있다.
이상. 끝.
이렇게 많은 내용이 들어갈 줄 몰랐습니다.
수고하셨습니다.
'IT > WSL' 카테고리의 다른 글
[redis] 클러스터 실습(feat. docker compose) (0) | 2025.01.12 |
---|---|
도커 컨테이너 volume 권한에 대해서 (0) | 2024.12.03 |
오프라인 WSL / 우분투 / 도커 / 도커 컴포즈 설치기 (0) | 2024.11.22 |
[ubuntu] grep 명령어 정리 (0) | 2024.05.24 |
[docker] kafka 명령어 (0) | 2024.05.23 |
docker compose - nginx 설치 및 설정 (0) | 2024.03.30 |
AWS EC2 인스턴스 생성 및 트러블 슈팅 (0) | 2024.03.30 |
WSL에 도커(Docker)를 설치하자. (0) | 2024.02.28 |
WSL 을 설치해보자 (0) | 2024.02.20 |
docker 에 mysql 설치/삭제 (1) | 2024.02.17 |