drone.io1.0에서 현금과parallel pipeline을 이용하여 신속하게 구축

drone.io1.0에서 현금과parallel pipeline을 이용하여 신속하게 구축
drone.io1.0 사용에서 처리되지 않은 화제는 의존 관계의 캐시와pipeline의 병행 실행이 있습니다.
캐시 기능은drone입니다.io0.8Drillster/drone-volume-cache일 수도 있습니다.1.0 공식plugen을 통해서도 가능합니다.
병행 집행에 대해서는 0.8에서Parallel Execution로 사용group했고 1.0에서는 기술depends_on을 통해 실현했다.
캐시 설명 예
drone-plugins/drone-volume-cache를 사용하면 캐시vendor/bundlevendor/bin를 사용할 수 있습니다.
호스트 측면/tmp/cache/drone-rails-example 아래에 캐시가 데이터로 저장됩니다.호스트 측면에volume가 설치되어 있기 때문에trusted repository 로고를 ON으로 설정해야 합니다. 웹 UI를 통해 변경할 수 있습니다.
---
kind: pipeline
name: default

steps:
- name: restore-cache
  image: plugins/volume-cache
  settings:
    mount:
    - ./vendor/bundle
    - ./vendor/bin
    restore: true
  volumes:
  - name: cache
    path: /cache

- name: bundle-install
  image: ruby:2.6.1
  commands:
  - bundle install --path=vendor/bundle --binstubs=vendor/bin --clean
  - bundle exec rubocop -R -fs app spec
  - bundle exec rspec
  environment:
    RAILS_ENV: test

- name: rebuild-cache
  image: plugins/volume-cache
  settings:
    mount:
    - ./vendor/bundle
    - ./vendor/bin
    rebuild: true
  volumes:
  - name: cache
    path: /cache

- 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_PASSWORD: drone_example
    MYSQL_RANDOM_ROOT_PASSWORD: true
    MYSQL_USER: drone_example_test
    TZ: Asia/Tokyo

volumes:
- name: cache
  host:
    path: /tmp/cache/drone-rails-example
parallel pipeline steps
drone.io의 pipeline은 기본적으로 기술 순서에 따라 순서대로 집행되며, 기술depends_on이라면 의존적인 step가 끝난 후 기술의 전후와 무관하게 집행된다.
FAQ에는 0.8과의 비교를 포함한 알기 쉬운 기술How to setup parallel Pipeline steps (1.0+)이 실렸다.
실제로 Rubop과 RSpec은 서로 독립적으로 실행할 수 있는 예를 다음과 같이 기술합니다(캐시를 설정할 수도 있음)github.
---
kind: pipeline
name: default

steps:
- name: restore-cache
  image: plugins/volume-cache
  settings:
    mount:
    - ./vendor/bundle
    - ./vendor/bin
    restore: true
  volumes:
  - name: cache
    path: /cache

- name: bundle-install
  image: ruby:2.6.1
  commands:
  - bundle install --path=vendor/bundle --binstubs=vendor/bin --clean
  environment:
    RAILS_ENV: test
  depends_on:
  - restore-cache

- name: rubocop
  image: ruby:2.6.1
  commands:
  - bundle check --path=vendor/bundle
  - bundle exec rubocop -R -fs app spec
  environment:
    RAILS_ENV: test
  depends_on:
  - bundle-install

- name: rspec
  image: ruby:2.6.1
  commands:
  - bundle check --path=vendor/bundle
  - bundle exec rspec
  environment:
    DATABASE_HOST: db
    DATABASE_PORT: 3306
    RAILS_ENV: test
  depends_on:
  - bundle-install

- name: rebuild-cache
  image: plugins/volume-cache
  settings:
    mount:
    - ./vendor/bundle
    - ./vendor/bin
    rebuild: true
  volumes:
  - name: cache
    path: /cache
  depends_on:
  - bundle-install

- name: notify-slack
  image: plugins/slack
  settings:
    webhook:
      from_secret: webhook
  depends_on:
  - rubocop
  - rspec

services:
- name: db
  image: mysql:5.7
  environment:
    MYSQL_DATABASE: drone_example_test
    MYSQL_PASSWORD: drone_example
    MYSQL_RANDOM_ROOT_PASSWORD: true
    MYSQL_USER: drone_example_test
    TZ: Asia/Tokyo

volumes:
- name: cache
  host:
    path: /tmp/cache/drone-rails-example

...
bundle-instal step 이후 rubocop, rspec 명령을 병행합니다.depends_on의 기술은 다른 step에도 기재되어 있는데 이것은 필요한 기술이다.
bundle-install step depends온에 restore-cache를 기술하지 않으면 다음과 같은 의도하지 않은 순서로 step를 실행합니다.
나는 이 부근에서 0.8의group로 기술하는 것이 더 편리하다고 생각한다.
期待する順序
- [restore-cache] - [bundle-install] - [rubocop]
                                     \- [rspec]

実行される順序
- [restore-cache]
\- [bundle-install] - [rubocop]
                    \- [rspec]
웹 UI는 병렬 실행을 표현하지 않아 적막합니다.

좋은 웹페이지 즐겨찾기