GitLab과 drone.io의 version 0.4를 이용하여 hive의 CI 환경 작성에 트라이한다(Part 1)~환경 구축편~

이전 게시물 에서 hiveserver2의 docker 이미지를 만들었습니다.

이 이미지와 drone 0.4를 연계하여 hive 쿼리의 CI를 할 수 없을까라고 하는 것으로 시험해 보았습니다.

1. 결론



할 수있어.

2. [.drone.yml]



이용한 .drone.yml 는 아래와 같이, metasotre용의 mysqld를 스타트하고 있는 가운데, 아직 행해지고 있지 않습니다만 향후 개선 예정입니다.
build:
  image: letusfly85/hiveserver2
  commands:
    - sudo /etc/init.d/mysql start
    - hive -e 'create table hoge(name string)'

compose:
  zookeeper:
    image: jplock/zookeeper:latest

3. drone 0.4의 구축에 대해서



비망을 위해 메모를 남겨주세요.

3-0. 환경 정보



우분투 14.04
Docker 1.9
docker-compose 1.5.0
Golang 1.5
GitLab 8.1.2

3-1. goenv 설치


git clone https://github.com/wfarr/goenv.git ~/.goenv

echo 'export PATH=/root/.goenv/bin:\$PATH' >> ~/.bashrc
echo 'eval "$(goenv init -)"' >> ~/.bashrc

3-2. Golang 설치


goenv install 1.5

echo 'goenv global 1.5' >> ~/.bashrc
echo 'export GOPATH=/root/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc

echo 'export GO15VENDOREXPERIMENT=1' >> ~/.bashrc

source ~/.bashrc

3-3. 드론 0.4 빌드


mkdir -p $GOPATH/src/github.com/drone

git clone https://github.com/drone/drone $GOPATH/src/github.com/drone/drone

apt-get install gcc make g++

cd $GOPATH/src/github.com/drone/drone
make deps
./contrib/setup-sassc.sh

make all

위를 실행하면 "$GOPATH/src/github.com/drone/drone"에 drone이라는 실행 가능한 바이너리 파일이 완성됩니다.

3-4. GitLab 연계



환경 변수를 준비합니다.
  • /etc/profile.d/drone.sh 되는 것을 준비했습니다.

  • 내용은 다음과 같습니다
    export SERVER_ADDR=:80
    export REMOTE_DRIVER=gitlab
    client_id=*******************************
    client_secret=*******************************
    export REMOTE_CONFIG="https://gitlab.test.com"
    client_id=${client_id}&client_secret=${client_secret}&skip_verify=false&open=false&search=true"
    

    3-5 드론 시작



    옵션 [--debug]에서 짚과 로그가 출력됩니다.
    cd $GOPATH/src/github.com/drone/drone
    
    ./drone --debug
    

    4. 실행해 보았다



    [.drone.yml]을 저장소에 저장하고 master로 push했습니다.

    결과는 아래와 같다. 갈 수 있을 것 같네요.



    5. 과제


  • JDBC 드라이버와 DBUnit로 테스트 할 수 있는지 확인합니다.
  • metastore 관리는 derby로 좋고, zookeeper도 하나의 컨테이너에 정리하면 끝나므로 더 컴팩트하게
  • 아티팩트의 배포 연계를 어떻게 할 것인가를 검토한다
  • 좋은 웹페이지 즐겨찾기