반응형

안녕하세요.

우리가 작성한 코드가 깃헙이나 깃랩에 push가 되면 자동으로 빌드 및 배포가 될 수 있도록 CI 툴을 많은 사용 합니다.

젠킨스나, Travis CI는 많이 들어 보셨으리라 생각이 되는데요.

앞에 말씀드린 툴 이외에도 Drone.io라는 CI 툴이 있습니다.

Drone.io를 사용해보도록 하겠습니다.

 

도커 기반으로 설치를 하기 때문에 도커가 설치가 되어 있으셔야 됩니다.

 

1. 깃랩 클라이언트ID와 키를 발급

깃랩 프로젝트 레파짓을 사용하기 때문에 클라이언트 ID와 키를 발급 받으셔야 됩니다.

깃랩 로그인 후 오른쪽 상단 프로필을 눌러주세요.

preference -> Application(왼쪽 메뉴) -> 값 입력

Name: 구분 이름

Redirect URI: 드론.io를 설치할 서버 URI/login

ex) http://127.0.0.1:8080/login

---> 포트번호는 설정의 따라서 달라질 수 있습니다.

 

확인을 누르고 나면 Application ID와 Secret을 확인하실 수 있습니다.

 

2. 서버에서 시크릿 키 발급

openssl rand -hex 16

 

3. 서버에서 드론(서버) 설치 (도커로 진행)

docker pull drone/drone:1

 

4. 환경 변수 등록 (~/.bashrc)

export DRONE_GITLAB_CLIENT_ID=[...]  <- 깃랩에서 발급 받은 클라이언트 아이디
export DRONE_GITLAB_CLIENT_SECRET=[...]  <- 깃랩에서 발급 받은 시크릿 키
export DRONE_RPC_SECRET=[...] <- 2번 항목 서버에서 발급 받은 키
export DRONE_SERVER_HOST=127.0.0.1:8080
export DRONE_SERVER_PROTO=http

등록 후  source ~/.bashrc 명령어를 입력해주세요

 

5. 드론 서버 구동

docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_GITLAB_SERVER=https://gitlab.com \
  --env=DRONE_GITLAB_CLIENT_ID=`echo $DRONE_GITLAB_CLIENT_ID` \
  --env=DRONE_GITLAB_CLIENT_SECRET=`echo $DRONE_GITLAB_CLIENT_SECRET` \
  --env=DRONE_RPC_SECRET=`echo $DRONE_RPC_SECRET` \
  --env=DRONE_SERVER_HOST=`echo $DRONE_SERVER_HOST` \
  --env=DRONE_SERVER_PROTO=`echo $DRONE_SERVER_PROTO` \
  --env=DRONE_LOGS_TRACE=true \
  --publish=8080:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:1

구동할 때 8080 포트로 구동하였습니다.

 

6. 드론 서버 구동 확인

docker ps -a
docker logs drone

위의 명령어를 통해서 도커가 잘 구동이 되었는지 확인을 해주세요.

그리고 등록하신 서버 호스트 주소를 입력하여 drone.io 대시보드가 잘 보이는지 확인을 해주시면 되겠습니다.

 

지금까지는 Drone 서버를 설치를 하였습니다.

이후에 개발자가 깃랩에 코드를 push 하고 드론이 자동으로 빌드를 하기 위해서는 drone runner를 설치를 해주셔야 됩니다.

즉, 드론 서버는 깃랩과 통신을 하기 위한 서버 역할을 하고, runner는 (빌드) 작업을 진행하는 역할을 합니다.

러너가 없다면 코드가 push 되고 드론 서버에서 요청을 받아도 빌드 작업을 진행할 수 없습니다.

 

7. 드론 러너 설치 (도커)

docker pull drone/drone-runner-docker:1

 

8. 환경변수 등록(~/.bashrc)

export DRONE_RPC_HOST=127.0.0.1:8080
export DRONE_RPC_PROTO=http

 

9. 드론 러너 구동

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=`echo $DRONE_RPC_PROTO` \
  -e DRONE_RPC_HOST=`echo $DRONE_RPC_HOST` \
  -e DRONE_RPC_SECRET=`echo $DRONE_RPC_SECRET` \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=`echo $HOSTNAME` \
  -p 3000:3000 \
  --restart always \
  --name runner \
  drone/drone-runner-docker:1

 

10. 드론 러너 구동 확인

docker logs runner

위와 같이 성공으로 나오면 이상 없이 설치가 되셨습니다.

 

러너까지 설치가 완료되셨다면, drone.io를 사용하기 위한 준비는 끝났습니다.

감사합니다.

 

 

[참고 문서]

드론 서버: docs.drone.io/runner/docker/installation/linux/

드론 runner: docs.drone.io/runner/docker/overview/

 

 

반응형

+ Recent posts