ONE DUDE`S BLOG

/media/05e37665-drone.webp

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
devops
CI/CD
0
1780