Add Drone CI setup with Ngrok and Docker Compose

This commit is contained in:
Chou Tzu Chieh 2024-03-03 02:04:02 +08:00
parent b4a5ec43a4
commit e9a9704c56
5 changed files with 90 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.env

39
README.md Normal file
View File

@ -0,0 +1,39 @@
# Drone CI with Ngrok and Docker
Setting up [Drone CI for Github provider](https://docs.drone.io/server/provider/github/) with [Ngrok](https://ngrok.com/docs/getting-started/?os=linux) and Docker Compose
## Getting started
### Expose local 8080 port using Ngrok
```
$ export NGROK_AUTH_TOKEN=YOUR_NGROK_AUTH_TOKEN
$ export NGROK_DOMAIN=YOUR_NGROK_DOMAIN
$ docker run --name ngrok_container --net=host -it -e NGROK_AUTHTOKEN=${NGROK_AUTH_TOKEN} ngrok/ngrok:latest http --domain=${NGROK_DOMAIN} 8080
```
### Start Drone with Docker Compose
```
$ export DRONE_GITHUB_CLIENT_ID=YOUR_GITHUB_CLIENT_ID >> .env
$ export DRONE_GITHUB_CLIENT_SECRET=YOUR_GITHUB_CLIENT_SECRET >> .env
$ export DRONE_RPC_SECRET=YOUR_DRONE_RPC_SECRET >> .env
$ export DRONE_SERVER_HOST=YOUR_DRONE_SERVER_HOST >> .env
$ docker compose up
```
## Quick Start
### Running Drone CI in the Background
if `.env` file is already set up
```bash
$ chmod +x start.sh
$ ./start.sh
```
## Stop Drone CI and Ngrok
```bash
$ chmod +x stop.sh
$ ./stop.sh
```

32
docker-compose.yml Normal file
View File

@ -0,0 +1,32 @@
version: '3'
services:
drone-server:
image: drone/drone:2
restart: always
volumes:
- /var/lib/drone:/data
environment:
DRONE_GITHUB_CLIENT_ID: ${DRONE_GITHUB_CLIENT_ID}
DRONE_GITHUB_CLIENT_SECRET: ${DRONE_GITHUB_CLIENT_SECRET}
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST}
DRONE_SERVER_PROTO: http
ports:
- 8080:80
- 443:443
drone-runner:
image: drone/drone-runner-docker:1
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
DRONE_RPC_PROTO: http
DRONE_RPC_HOST: drone-server
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
DRONE_RUNNER_CAPACITY: 2
DRONE_RUNNER_NAME: my-first-runner
ports:
- 3000:3000

12
start.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
# Source environment variables from .env file
set -a
source .env
set +a
# Expose local 8080 port using Ngrok
docker run --name ngrok_container --net=host -e NGROK_AUTHTOKEN=${NGROK_AUTH_TOKEN} ngrok/ngrok:latest http --domain=${NGROK_DOMAIN} 8080 &
# Start Drone server and agent using Docker Compose
docker compose up -d

6
stop.sh Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# Stop and remove the Docker containers
docker compose down
docker stop ngrok_container
docker rm ngrok_container