# Drone Ci • Obsidian Garden

# Drone Ci

Can be used with Private docker registry to deploy things using #docker.

## Pushing to private docker_registry

You should specify `global_docker_login`, `global_docker_password`, `global_docker_registry` organizations variables in your drone. And `docker_repo` variable for your repo as `docker.yourdomain.com/your-image`.

This is example of `.droneci` for private docker registry:

    kind: pipelinename: buildtype: dockerplatform:  os: linux  arch: amd64steps:  - name: build-master    image: plugins/docker    when:      branch:        - master    settings:      dockerfile: Dockerfile      tag:        - ${DRONE_BRANCH}      username:        from_secret: global_docker_login      password:        from_secret: global_docker_password      registry:        from_secret: global_docker_registry      repo:        from_secret: docker_repo

## Docker-compose file for drone-ci

The `drone` service is ui itself and `drone-agent` is runner for builds, that can be started on different machine (or machines).

Change `secret_id`, `rpc_secret` and `drone.url` to something you like.

    version: "3"services:  drone:    container_name: drone    image: drone/drone:latest    environment:      - DRONE_GITHUB_CLIENT_ID=secret_id      - DRONE_GITHUB_CLIENT_SECRET=client_secret      - DRONE_RPC_SECRET=rpc_secret      - DRONE_SERVER_HOST=drone.url      - DRONE_USER_CREATE="username:user,admin:true"      - DRONE_SERVER_PROTO=https      - DRONE_TLS_AUTOCERT=false      - DRONE_GIT_ALWAYS_AUTH=false      - DRONE_LOGS_DEBUG=true      - DRONE_LOGS_TRACE=true    restart: always    volumes:      - ./data:/data    ports:      - 8090:80  drone-agent:    container_name: drone__agent    image: drone/agent:latest    command: agent    restart: always    volumes:      - /var/run/docker.sock:/var/run/docker.sock    environment:      - DRONE_RPC_SERVER=https://drone.url      - DRONE_RPC_SECRET=rpc_secret

## Caching builds

Haven't checked that yet, but there's a manual from Laszlo Fogas about that.

## Get user info

    export DRONE_SERVER=https://drone.urlexport DRONE_TOKEN=passworddrone info

## Mark user as trusted

Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to `1`.

    drone repo update $1 --trusted=true && drone repo info $1