/ server  ci  drone.io  drone 

drone.io - server 설치하기

최근에 drone.io 를 사용할 일이 있었는데, 생각보다 자료가 없어서 이번에는 server 구성에 대해서 다루고 다음 글에서는 agent 에 대해서 다룰 예정이다.

개요

  • 사이트 : https://drone.io/
  • jenkins, travis-ci, github actions 처럼 CI 및 CD 까지 할 수 있는 툴

특징

구성

  • server : drone.io 사이트에 대한 서버 역할
  • agent : 개별 repository 에서 실행하는 pipeline 을 수행하는 역할, runner 라고 표현한다.
    • Docker Runner, Exec Runner, SSH Runner

server 설치하기

1) github OAuth app 만들기

  • github > Settings > Developer Settings > OAuth Apps 에서 OAuth app 을 만든다.
  • callback url 을 지정하려면 public url 이 있어야 하는데 테스트 시에는 ngrok 을 이용해서 public url 을 가져올 수 있다. (https://medium.com/@jccguimaraes/run-a-drone-ci-pipeline-locally-f4bfb4741c53)
  • public url 을 가지고 github oAuth apps 의 callback url 에 해당 값을 넣고 app 을 만든다.

2) drone server 설치하기

  • server 와 agent(runner) 사이의 인증을 위해서 shared secret 을 만든다
$ openssl rand -hex 16
> adc394d69c6ef00a933c32be5144ca18
  • download
$ docker pull drone/drone:1.6.0
  • configurations & run
$ docker run \
      --volume=/var/lib/drone:/data \
      --env=DRONE_AGENTS_ENABLED=true \
      --env=DRONE_GITHUB_SERVER=https://github.com \
      --env=DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID} \
      --env=DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET} \
      --env=DRONE_RPC_SECRET=${DRONE_RPC_SECRET} \
      --env=DRONE_SERVER_HOST=${DRONE_SERVER_HOST} \
      --env=DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO} \
      --publish=80:80 \
      --publish=443:443 \
      --restart=always \
      --detach=true \
      --name=drone \
      drone/drone:1.6.0
  • DRONE_RPC_SECRET : 앞에서 설정한 shared secret 값을 넣어준다. server 와 agent(runner) 가 통신할때 사용한다.
  • DRONE_GITHUB_CLIENT_ID, DRONE_GITHUB_CLIENT_SECRET : 앞 단계에서 github oAuth app 을 만들었는데, 그 상세정보에 있는 client_id, client_secret 를 넣어준다.
  • DRONE_SERVER_HOST, DRONE_SERVER_PROTO : DRONE_SERVER_HOST, DRONER_SERVER_PROTO 는 drone 에서 github repo 를 Activate 할때 webhook 지정 시 사용된다. 예를 들어 DRONER_SERVER_PROTO=http, DRONE_SERVER_HOST=127.0.0.1 로 지정하게 되면 http://127.0.0.1 로 repo 내 webhook 설정에 http://127.0.0.1 로 설정된다.

ash84

ash84

파이썬을 좋아하는 개발자이며, 두 아이의 아빠입니다. 최근에 Infra, Devops 에 관심을 가지고 있습니다. 🤩

Read More