muerwre.github.io/content/Docker/Drone-ci.md
2022-11-04 18:29:11 +06:00

98 lines
2.5 KiB
Markdown

Can be used with [Private docker registry](Private%20docker%20registry.md) 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](Private%20docker%20registry.md):
```yaml
kind: pipeline
name: build
type: docker
platform:
os: linux
arch: amd64
steps:
- 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.
```yaml
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](https://laszlo.cloud/the-ultimate-droneci-caching-guide) from [Laszlo Fogas](https://laszlo.cloud/) about that.
## Get user info
```shell
export DRONE_SERVER=https://drone.url
export DRONE_TOKEN=password
drone 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`.
```shell
drone repo update $1 --trusted=true && drone repo info $1
```