Пишем
Пример пайплайна:
kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
Можно указывать в одном drone.yml'е несколько пайплайнов/секретов/и т.д.
- kind: определяет что это - пайплайн, секрет или еще что
- type: тип пайплайна (exec, docker, etc...)
- name: имя пайплайна
- steps: шаги пайплайна
Приколюхи
Можно фильтровать прод и тестинг таким образом:
node:
target: shell-scripts
when:
branch:
- master
В node указывается тег target, которым отделять прод от теста. Например на проде:
DRONE_RUNNER_LABELS=target:prod
А на тестинге:
DRONE_RUNNER_LABELS=target:testing
Потом сделать 2 пайплайна для разных веток (testing/master). Правда у меня почему-то не вышло.
Как это все строить?
Деплой по сути состоит из нескольких этапов - загрузка кода, проверка+-линтовка, деплой (опционально с доп. подтверждением).
Плагины
Указываются как imagы:
kind: pipeline
type: docker
name: default
steps:
- name: test
image: golang:1.13
commands:
- go build
- go test -v
- name: notify
image: plugins/slack
settings:
channel: dev
webhook: https://hooks.slack.com/services/...