Game Service 생성

최준호·2022년 4월 3일
0

game

목록 보기
1/14
post-thumbnail

🔨Game Service Project 만들기

프로젝트를 진행하다가 아는 개발자분들과 함께 개발을 하기로 해서 판매 사이트보다는 재미있는 사이트를 만들고 싶어서 보드게임 사이트를 만들어보기로 했다. 다행히 아직 판매나 상품 로직은 만들기 전이여서 바로 내가 하던 프로젝트에서 방향만 바꿔서 진행하기로 했다.

프로젝트를 생성했다.

🔨Server yml 작성

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://{eureka 서버}/eureka

config server yml

server:
  port: 0 #랜덤으로 포트 설정

spring:
  application:
    name: game-service  #Eureka에 등록되는 서비스 이름
  h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
      path: /h2-console
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb
    username: sa
    password:
      
eureka:
  instance:
    instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}  #포트가 중복으로 설정되어 구분하기 위한 인스턴스 아이디 값 설정

application yml

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: game
      profile: default

bootstrap.yml
yml들을 작성해주었다.

⚙️gadle depency 추가

implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

bootstrap과 actuator를 추가해주자 actuator는 지금은 사용하지 않지만 같이 추가해두었다.

✅실행 Test

모든 기본 설정을 마치고 실제로 서버가 작동하는지 확인해보자

정상적으로 Eureka에 등록된다.

그럼 이제 실서버에서 소스를 작성할 수 있도록 git 작업과 jenkins 작업을 끝내자!

🐋Docker 설정

FROM openjdk:11-ea-27-jdk-slim

VOLUME /tmp

# jar파일 복사
COPY build/libs/game-service-1.0.jar game.jar
ENTRYPOINT ["java","-jar","game.jar"]

Dockerfile을 다음과 같이 작성해주고 테스트해보자!

docker build -t ililil9482/game:1.0 .

명령어로 실행해봤고

잘 진행되었다.

🔨Jira 세팅

이제 혼자하는게 아니라 공유해야하니까... Jira를 사용해서 진행해보려고 한다.

프로젝트를 연결해주고

window의 경우 alt + shift + n
mac의 경우 option + shift + n

눌러서 티켓을 발급 받아서 진행해보자

잘 적용되었다.

티켓을 발급하면 자동으로 진행 중으로 상태를 변경하며 mian 브랜치나 develop 브랜치에서 소스를 가져오면 되는데. 우리는 아직 main 뿐이라 main으로 설정해서 사용하려고 한다.

test를 위해 소스를 대충 변경한 뒤

커밋까지 해보자. Jira의 티켓 값은 커밋 메세지에 적어도 되지만 브랜치로 하는게 더 편해서 그냥 브랜치에만 적용하려고 한다.

jira 티켓을 발급해서 push하면 브랜치가 새로 따지므로 자동으로 pull request가 생성된다.

머지해주거나 코드리뷰를 해주면 끝!

지라에서도 커밋되고 풀 리퀘스트가 정상작동 한것을 확인할 수 있다.

alt + shift + w
를 눌러서 다음과 같이 발급받은 티켓을 종료시킬 수 있다.

🤵‍♂️Jenkins 세팅

pipeline {
    agent any

    stages {
        stage('Clone') {
            steps {
                git branch: 'main', credentialsId: '8e8302f1-6b98-4bfe-9981-2e027e49089b', url: 'https://github.com/juno-choi/game-service.git'
            }
        }
        stage('Clean') {
            steps {
                sh 'cd /var/jenkins_home/workspace/game'
                sh 'chmod +x gradlew'
                sh './gradlew clean'
            }
        }
        stage('Build') {
            steps {
                sh './gradlew build'
            }
        }
        stage('HUB Push') {
            steps {
                sh 'docker build -t ililil9482/game:1.0 .'
                sh 'docker push ililil9482/game:1.0'
            }
        }
        stage('Down') {
            steps {
sshPublisher(publishers: [
  sshPublisherDesc(configName: 'publisher',
  transfers: [
    sshTransfer(cleanRemote: false,
    excludes: '',
    execCommand: 'cd /msa/game && sudo docker-compose down',
    execTimeout: 120000,
    flatten: false,
    makeEmptyDirs: false,
    noDefaultExcludes: false,
    patternSeparator: '[, ]+',
    remoteDirectory: '',
    remoteDirectorySDF: false,
    removePrefix: '',
    sourceFiles: '')
  ],
  usePromotionTimestamp: false,
  useWorkspaceInPromotion: false,
  verbose: false)
])
            }
        }
        stage('Up') {
            steps {
sshPublisher(publishers: [
  sshPublisherDesc(configName: 'publisher',
  transfers: [
    sshTransfer(cleanRemote: false,
    excludes: '',
    execCommand: 'cd /msa/game && sudo docker-compose up -d',
    execTimeout: 120000,
    flatten: false,
    makeEmptyDirs: false,
    noDefaultExcludes: false,
    patternSeparator: '[, ]+',
    remoteDirectory: '',
    remoteDirectorySDF: false,
    removePrefix: '',
    sourceFiles: '')
  ],
  usePromotionTimestamp: false,
  useWorkspaceInPromotion: false,
  verbose: false)
])
            }
        }
    }
}

다음과 같이 파이프라인을 작성했다.

젠킨스 정상 작동했고

실제 서버의 Eureka에도 정상 등록되었다!

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글