drone.io1.0 사용

drone.io1.0 사용
github의 privte 창고에 있는 CI/CD dronio 0입니다.8을 사용했지만 1.0이 나왔기 때문에 쉽게 옮길 수 있는지 검증했다.
Upgrading (Important) 변경점에 따라 실제 운행한다.
또 이른바 크론잡스의 나이틀리 구축 기능은 1.0에서 설정할 수 있기 때문에 그쪽에서도 검증할 수 있다.
drone 서버를 시작할 때까지
GiitHub 조인트, Single Machine 부팅https://docs.drone.io/installation/github/single-machine/)。
OAuth Application 제작 절차는 기본적으로 변화가 없기 때문에 생략합니다.
주의사항은 서버에 제공된 매개 변수가 크게 변했기 때문에 처음부터 다시 설정해야 한다https://docs.drone.io/reference/)。
다음은 http와 특정 사용자의 이용에 얽매인 docker-compose입니다.yml입니다.DRONE_USER_FILTER 공동 작업 가능한 사용자 또는 Organization을 제한할 수 있습니다.
version: '3'
services:
  drone:
    image: drone/drone:1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/drone:/data
    ports:
      - "80:80"
      - "443:443"
    environment:
      - DRONE_GITHUB_SERVER=https://github.com
      - DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
      - DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
      - DRONE_SERVER_PROTO=http
      - DRONE_USER_FILTER=${DRONE_USER_FILTER}
docker-compose up -d 명령을 사용하여 서버를 시작하면 GiitHub에서 협업한 후drone의 웹 인터페이스를 확인할 수 있습니다.
만약 무슨 문제가 발생하면 환경 변수DRONE_LOGS_DEBUG=true를 주고 docker-compose logs -f drone로 로그를 추적할 수 있다.
성공하면 창고 목록을 표시하고 활성화하면 다음 피드 목록을 표시합니다.

piperline의 기술
문장 구조Migration from 0.8에서 쓴 바와 같이 일부 변화가 있기 때문에 이동할 때 주의해야 한다.
Rails 프로젝트를 미리 게재한 예drone-rails-example.
kind: pipeline
name: default

steps:
- name: spec
  image: ruby:2.6.1
  environment:
    DATABASE_HOST: 'db'
    DATABASE_PORT: 3306
  commands:
    - bundle install
    - bundle exec rubocop -R -fs app spec
    - bundle exec rspec

- name: notify-slack
  image: plugins/slack
  settings:
    webhook:
      from_secret: webhook

services:
- name: db
  image: mysql:5.7
  environment:
    MYSQL_DATABASE: 'drone_example_test'
    MYSQL_USER: 'drone_example_test'
    MYSQL_PASSWORD: 'drone_example'
    MYSQL_RANDOM_ROOT_PASSWORD: true
    TZ: 'Asia/Tokyo'
웹 UI도 새롭게 바뀌었고 보기 편하고 너무 예뻐요.

cronjobs
1.0부터 새로 추가된 기능으로 크론잡스를 열거할 수 있다.현재 문서에 기재되지 않았지만 설정할 수 있습니다.
어떤 주파수로job명과job명을 세울지 지정할 수 있습니다.
cron에 대해 지정된 시간에 실행되는 것은 현재 규격으로 사용할 수 없습니다. 링크

주의: 피플라인을 시간당 1회 실행하는 것을 확인했지만 위.drone.yml라면 시간당 슬랙 알림이 한 번 있기 때문에 콘디션 등을 통해 공을 들여야 한다.
현재 step의 condition에서cronjobs가 exclude를 진행하는 기능을 지정하지 않은 것 같아서 개선Issue할 수 밖에 없습니다.
참고 자료
  • Go OSS CI/CD 플랫폼 drone 1.0.0-rc.1의 새로운 기능 및 변경 사항
  • 좋은 웹페이지 즐겨찾기