yona를 이용하여 이슈 관리를 해보자 #yona #설치형 이슈트래커 (feat. docker yona)
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

오랜만에 개발자로 돌아온 유로띠 입니다

👏👏👏

 

다들 아마 회사에서 이슈트래커 하나씩은 사용하실 거 같습니다

(이슈 없는 프로젝트는 없겠죠?)

 

이슈트래커 종류는 정말 많이 있습니다 😀

 

 

 

Atlassian에서 개발한 Jira

Ruby기반의 Redmine

기본적으로 Git 호스팅이지만 이슈트래커도 같이하고 있는

GitHub GitLab

이외에도

트렐로(Trello), You Track

정말 다양한 이슈트래커가 있지요 👍

 

저희도 기존에 JIRA를 이용하여 사용하였지만

워낙 비싸기도 하고 인원도 적다 보니 점차 무료에 눈길이 가기 시작했습니다 🤣

 

그래서 이참에 바꾸기로 결심하고

이슈트래커를 알아보기로 했습니다 💪

 

우리 회사의 기준은

무료인지

릴리즈 노트나 현재 진행형으로 관리가 잘되는지

온프레미스 환경에서 사용 가능한지

개발자가 아닌 엔지니어나 다른 사람이 사용해도 쉬운지

된다면 Git 호스팅도 되는지

 

고민 끝에 결정한 이슈트래커는 바로

 

이슈트래커

Yona

입니다

 

 

 

 

👏👏👏👏

 

 

 

이번 포스팅에서는

✅ 이슈트래커 요나(yona)

✅ yona 설치하기 (feat. docker)

✅ yona 실행하기

에 대해서 알아보겠습니다 👍👍

 

🎉 이슈트래커 YONA


📢YONA 란?

 

처음 들어보신 분들도 계실 거라 생각합니다

저도 이슈트래커를 알아보기 전까지는 몰랐습니다 🤣

 

우선 Yona에 대해서 간단히 살펴보겠습니다 🔎

Naver를 비롯하여 게임회사, 통신회사 고객센터, 투자사, 학교, 기업 등에서 실제 사용되고 있는
Real World Application이며
설치형 이슈트래커 및 Git 코드 저장소입니다

# yona 공식 홈페이지 인용

 

Release Note

 

최근 5개의 Releases Note를 살펴보면

가장 최신 버전은 2020.02.24일

yona 프로젝트에 대해 활발하지는 않지만 지속적인 버전업이 보입니다 🧐

 

yona releases note

✅ Issue

 

이슈에 대해서도 지속적으로 관리하는 모습이 보입니다 🧐

 

 

또한 yona 자체가 이슈 트래커이기 때문에 이슈관리도

yona에서 직접 하는 모습도 보입니다 ✌

yona demo에서 yona에 대해 기본적인 UI나 사용 방법을 배울 수 있습니다 😁

 

 

자 그럼 yona를 온프레미스 환경으로

구축해보도록 하겠습니다

👏👏👏


📢yona 설치하기

 

그전에 yona를 설치하기 위한

환경을 알려드리겠습니다

 

💡 HW 사양

JAVA가 기동 가능한 CPU면 작동합니다

최소 1GB이상 RAM이 필요합니다

 

💡 SW 사양

리눅스, 윈도우즈 등 사용하기 편한 걸 쓰시면 되지만 리눅스를 추천드립니다

필요한 프로그램은 JAVA 8 이상, MariaDB가 필요합니다

 

다양한 설치방법이 있지만

보다 간편하게 설치하기 위해 docker를 이용하여 설치해보도록 하겠습니다

docker 정보는 pokev25 GitHub를 참고하시면 됩니다 😊

 

혹시나 Docker를 잘 모르신다면 제가 올린 포스팅

[DOCKER] docker를 설치해보자 #1

[DOCKER] docker를 사용해 보자: 이미지와 컨테이너 #2

을 참고하면 도움이 되실 겁니다 ✌

 

✅ yona directory

 

pokev25 님의 GitHub에서 정보를 받으면 아래처럼 디렉토리가 보일 겁니다

yona
 - Dockerfile
 - docker-compose.yml
 |
 - data
 |
 - entrypoints
 | - before.sh
 | - bootstrap.sh
 |
 - mysql
 |
 - shell
 | - config.sh
 | - yona.sh

 

✅ Dockerfile

 

수정사항 없이 기존 Dockerfile 그대로 사용했습니다

FROM openjdk:8-jdk-alpine3.9

LABEL Description="This image is used to start the yona" maintainer="pokev25"

ARG YONA_VERSION=1.12.0
ARG YONA_BIN=yona-v${YONA_VERSION}-bin.zip
ARG YONA_DOWNLOAD_URL=https://github.com/yona-projects/yona/releases/download/v${YONA_VERSION}/${YONA_BIN}

## install package
RUN apk add --no-cache unzip bash tzdata

## Timezone
ENV TZ Asia/Seoul

## make work directory
RUN mkdir -p /yona/downloads

## install yona
RUN cd /yona/downloads && \
    wget --no-check-certificate $YONA_DOWNLOAD_URL && \
    unzip -d /yona/release ${YONA_BIN} && \
    mv /yona/release/yona-$YONA_VERSION /yona/release/yona && \
    rm -f ${YONA_BIN}

## set environment variables
ENV YONA_DATA "/yona/data"
ENV JAVA_OPTS "-Xmx2048m -Xms1024m"

## add entrypoints
ADD ./entrypoints /yona/entrypoints
RUN chmod +x /yona/entrypoints/*.sh

## yona home directory mount point from host to docker container
VOLUME /yona/data
WORKDIR /yona

## yona service port expose from docker container to host
EXPOSE 9000

## run yona command
ENTRYPOINT ["/yona/entrypoints/bootstrap.sh"]

 

✅ Docker-compose.yml

 

아래 yml 파일을 기존에 제공해준 부분에서 mariadb를 추가하였습니다

version: '2'

services:
  yona:
    build: .
    image: pokev25/yona:1.12.0
    restart: always
    environment:
      - BEFORE_SCRIPT=before.sh
      - JAVA_OPTS=-Xmx2048m -Xms1024m
    volumes:
      - ./data:/yona/data
    ports:
      - "9000:9000"
    links:
      - yona_db

  yona_db:
    image: mariadb
    container_name: yona_db
    restart: always
    volumes:
      - /home/yona/mysql/data:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: yonapassword
      MYSQL_DATABASE: yona
      MYSQL_USER: yona
      MYSQL_PASSWORD: yonapassword
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

 

volumes:
데이터 보존을 위해 호스트 디렉토리와  컨테이너의 디렉토리를 공유시켜 줍니다

links:
yona 컨테이너에서 별명(alias)을 이용하여 MariaDB의 컨테이너를 접근하도록 설정합니다

 

💡 참고

기본적인 설정은 yona 컨테이너와 마운트 한 data/conf 디렉토리 하위에 application.conf 파일을 보시면

이메일 설정이나 접근 제한 여부, 소셜 로그인 설정 등 설정할 수 있습니다 😁

자세한 설정 방법은 yona application.conf 설명을 참고해 주세요

 

 


📢yona 실행하기

 

yona구축을 위한 docker 준비는 끝났습니다

yona를 실행해 보도록 하겠습니다

 

 

✅ docker-compose 실행

$ docker-compose up -d

 

✅ docker images 확인

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
pokev25/yona        1.12.0              5912356f8658        11 hours ago        221MB
mariadb             latest              22851c7fe916        28 hours ago        407MB
openjdk             8-jdk-alpine3.9     a3562aa0b991        13 months ago       105MB

pokev25님이 만드신 yona:1.12.0 이미지와 온프레미스 환경에 저장소로 사용될 mariadb 이미지가 생성되었습니다

또한 yona 실행에 필요한 openjdk 이미지도 생성되었습니다

 

docker가 정상적으로 기동 되었는지 컨테이너를 확인해 보겠습니다 🧐

 

✅ docker 컨테이너 확인

$ docker ps -a

 

✅ yona 접속하기

드디어 이슈트래커 yona를 구성하였습니다. 9000번 port로 설정하였구요

http://localhost:9000을 통해 접속해보도록 하겠습니다

 


📢마무리

 

여러 프로젝트를 공개, 비공개로 만들 수 있고

저장소를 설정하여 코드를 주고받을 수 있습니다 😁

 

 

프로젝트 메인 화면입니다

새 이슈를 등록하여 담당자를 지정해서

이슈 관리를 진행할 수 있습니다 👍

 

 

각 이슈에 대해서 확인하고

이슈 작성은 Markdown 형식으로

작성할 수 있으며 Markdown 도움말이 있기 때문에 누구나

쉽게 작성할 수 있습니다 ✌

 

 

프로젝트의 서브 단위로서 마일스톤

생성하여 각 이슈의 달성치도 알 수 있습니다

 

 

 

 

 

💡 참고 사이트

yona 공식 사이트

yona docker-compose 참조

yona DB 연동 참조

 

반응형