Drone CI/CD
12.06.2021
DRONE - self-hosted CI/CD платформа. Использующая декларативный подход для описания пайплайнов, а также контейнеризированную сборку.
Drone. Self hosted CI/CD
установка
Пример честным образом позаимствован отсюда
.env
#!/bin/bash
export SERVER_HOST=<YOUR IP>
export DRONE_RPC_SECRET=YOUT SUPER STRONG SECRET
export DRONE_GITLAB_CLIENT_ID=""
export DRONE_GITLAB_CLIENT_SECRET=""
export DRONE_RPC_SECRET=""
export DRONE_USER_FILTER=user1,user2,group1
docker-compose.yaml
version: '3.7'
services:
drone-server:
image: drone/drone:1.6.2
ports:
- 80:80
- 443:443
restart: always
volumes:
- /var/lib/drone:/data
environment:
DRONE_USER_FILTER: ${DRONE_USER_FILTER}
DRONE_AGENTS_ENABLED: "true"
DRONE_GITLAB_CLIENT_SECRET: ${DRONE_GITLAB_CLIENT_SECRET}
DRONE_GITLAB_CLIENT_ID: ${DRONE_GITLAB_CLIENT_ID}
DRONE_GITLAB_SERVER: https://gitlab.com
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_SERVER_HOST: ${SERVER_HOST}
DRONE_SERVER_PROTO: http
DRONE_USER_CREATE: username:octocat,admin:true
drone-runner:
image: drone/drone-runner-docker:1
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
DRONE_RPC_PROTO: http
DRONE_RPC_HOST: ${SERVER_HOST}
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_RUNNER_CAPACITY: 3
Запуск
source .env && docker-compose up -d
Gitlab
Управление пользователями
поставить CLI linux
curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone
настройки для коннекта
export DRONE_SERVER=http://drone.mycompany.com
export DRONE_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Токен (как и экспорт) можно найти на вашем запущеном дроне: http(s)://<address>/account
Не забываем в конфигах
DRONE_USER_CREATE=username:octocat,admin:true
Pipeline
Для работы с дрон необходимо создать .drone.yaml файл в корне проекта
Файл конфигурации
kind: pipeline
type: docker
name: default
steps:
- name: backend
image: golang
commands:
- go build
- go test
- name: frontend
image: node
commands:
- npm install
- npm run test
Пайплайнов (кто бы мог подумать) мб много
kind: pipeline
type: docker
name: backend
steps:
- name: build
image: golang
commands:
- go build
- go test
---
kind: pipeline
type: docker
name: frontend
steps:
- name: build
image: node
commands:
- npm install
- npm test
Пример ssh соединения для деплоя
kind: pipeline
type: ssh
name: default
server:
host: 1.2.3.4
user: root
password:
from_secret: password
steps:
- name: greeting
commands:
- echo hello world