[Devops][링크] 마이크로서비스 Devops 환경 구축하기

프로그래밍/서버2020. 12. 15. 09:46

안녕하세요. 마이크로서비스 Devops 관련 아주 좋은.. 강좌 링크를 공유 드립니다.

 

총 3편으로 이루어진 강좌입니다.

제가 윈도우/이클립스 환경에서 따라해서 번역본을 올리려고 했으나.. 저자가 허락하지 않아 링크만 올립니다. ㅜㅜ 영어로 되어있긴 하지만.. 너무 좋은 내용이니 관심있는 분들은 꼭 보시길 바랍니다.

 

아래의 표에 있는 내용은 제가 윈도우/이클립스환경에서 강좌를 따라하면서 만난 문제를 해결한 방법이니 참고하시길 바랍니다.(아마 저자는.. 맥 환경에서 진행한 것 같네요)

1부

tomgregory.com/building-a-spring-boot-application-in-jenkins

 

Building a Spring Boot application in Jenkins (part 1 of microservice devops series)

Welcome to the first of this three part series where we'll be taking a Spring Boot microservice from inception to deployment. In this article, we'll be creating a simple Spring Boot API application with integration tests, and then building it in a Jenkins

tomgregory.com

저는 이클립스에서 테스트를 했는데 아래와 에러가 발생했습니다.
org.hibernate.InstantiationException: No default constructor for entity: : com.tomgregory.entity.ThemeParkRide

lombok.NoArgsConstructor가 제대로 동작을 안해서 생기는 문제였습니다.
원인을 찾아보니 이클립스에선 Dependencies에 lombok을 추가와 더불어 이클립스에 lombok 플러그인을 따로 설치해야합니다. 아래의 글을 참고해주세요.
https://projectlombok.org/p2


그리고 또한 프로젝트 설정에서 Annotation Processing 에 있는 Enable project specific settings를 켜야 합니다.

저는 Eclipse에선 JUnit test로 테스트를 했습니다.
저는 Windows 환경에서 진행 중인데 Gradle 설치, 환경변수 등록과 Docker Desktop 설치 & 실행이 필요합니다.

Gradle 설치 방법: gradle.org/install/#manually
Docker Desktop 설치 방법: hub.docker.com/editions/community/docker-ce-desktop-windows
저는 bitbucket를 사용하는데 이 단계에서 아래의 에러가 발생했습니다.
stderr: remote: Invalid username or password
private repository를 만들어서 그렇습니다.
<url>에 아래와 같이 콜론으로 구별되는 username과 password를 줄 수 있으니 참고하세요.
seedJob.xml과 createJobs.groovy쪽 모두 확인해야 합니다.

https://username:password@bitbucket.org/username/my_jenkins.git
docker에서 Jenkins 컨테이너 접속해 아래의 경로로 갔습니다.
/var/jenkins_home/jobs/theme-park-job/workspace 

$ ls -la
total 48 
drwxr-xr-x 5 jenkins jenkins 4096 Dec 15 07:20 . 
drwxr-xr-x 6 jenkins jenkins 4096 Dec 15 07:20 .. 
drwxr-xr-x 8 jenkins jenkins 4096 Dec 15 07:20 .git 
-rw-r--r-- 1 jenkins jenkins 444 Dec 15 07:20 .gitignore 
-rw-r--r-- 1 jenkins jenkins 308 Dec 15 07:20 Jenkinsfile 
-rw-r--r-- 1 jenkins jenkins 1106 Dec 15 07:20 build.gradle 
drwxr-xr-x 3 jenkins jenkins 4096 Dec 15 07:20 gradle 
-rw-r--r-- 1 jenkins jenkins 5766 Dec 15 07:20 gradlew 
-rw-r--r-- 1 jenkins jenkins 2674 Dec 15 07:20 gradlew.bat 
-rw-r--r-- 1 jenkins jenkins 31 Dec 15 07:20 settings.gradle 
drwxr-xr-x 4 jenkins jenkins 4096 Dec 15 07:20 src

정말로 실행 권한이 없네요?

아래의 명령어를 실행해서 git에 있는 gradlew에 권한을 추가해야 합니다.
git update-index --chmod=+x gradlew

윈도우 Git Bash로 확인했을 때는 x권한이 있었지만.. 실제 git에선 그렇지 않나봅니다.
아마 윈도우랑 linux 파일 권한이 좀 달라서 이런 문제가 생기는 것 같습니다.

 

2부

tomgregory.com/building-a-spring-boot-application-in-docker-and-jenkins/

 

Building a Spring Boot application in Docker and Jenkins (part 2 of microservice devops series)

Welcome to the second of thisthree part serieswhere you'll learn how to take a Spring Boot microservice from inception to deployment, using all the latest continuous integration best practices. In this second article we'll be updating the Spring Boot servi

tomgregory.com

C:\Users\ddd\eclipse-workspace\themepark>gradlew assemble docker

FAILURE: Build failed with an exception. 

* What went wrong: 
A problem occurred configuring root project 'themepark'. 
> Illegal null value provided in this collection: [inspect, --format={{.State.Running}}, null] 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 

* Get more help at https://help.gradle.org 

BUILD FAILED in 4s

해결책: dockerRun{} 추가
Dockerfile에서

FROM jenkins/jenkins:2.225 를
FROM jenkins/jenkins:2.249.1-jdk11 로 변경하면 에러 사라짐

 

 

3부

tomgregory.com/deploying-a-spring-boot-application-into-aws-with-jenkins/

 

Deploying a Spring Boot application into AWS with Jenkins (part 3 of microservice devops series)

Welcome to the third and final part of this three part series where we're taking a Spring Boot application from inception to deployment, using Docker and all the current best practices for continuous integration with Jenkins. In this final article, we'll t

tomgregory.com

 

작성자

Posted by 드리머즈

관련 글

댓글 영역