/firstdrone

Leverage this sample structure for your first Drone Build

Primary LanguageGoApache License 2.0Apache-2.0

Build Status

Welcome to your first Drone project!

Feel free to leverage this project as your first Drone project. Can learn about the basics about Drone from the project site and the project itself.

A video walkthrough of the Drone installation steps can be found on the Harness Blog: Your First Drone Installation, Build, and Push

This is a simple structure of a Go Lang class and a Dockerfile to create an image of the Go Lang class. The Drone.yaml is wired to Drone out-of-box events.

  • Main Go
  • Dockerfile
  • Drone.yaml

Make sure in your Drone.yaml to edit the Docker Registry to be yours. The example repo: rlachhman/myrepo needs to be updated to yours.

Below are the commands to install the Drone Server and Drone Runner into Kubernetes.

Drone Docker Server Pull and Run

#Pull Server
sudo docker pull drone/drone:1

#Run Server
sudo docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_GITHUB_CLIENT_ID=yourID \
  --env=DRONE_GITHUB_CLIENT_SECRET=yourSecret \
  --env=DRONE_RPC_SECRET=yourRPC \
  --env=DRONE_SERVER_HOST=yourAddressOrIP \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_USER_CREATE=username:yourGitHubUser,admin:true \
  --publish=80:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:1

Drone Kubernetes Runner Role Binding

Save to drone_role.yaml then kubectl apply -f drone_role.yaml

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: drone
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - create
  - delete
- apiGroups:
  - ""
  resources:
  - pods
  - pods/log
  verbs:
  - get
  - create
  - delete
  - list
  - watch
  - update

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: drone
  namespace: default
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
roleRef:
  kind: Role
  name: drone
  apiGroup: rbac.authorization.k8s.io

Drone Kubernetes Runner Deployment

Save to drone_deployment.yaml then kubectl apply -f drone_deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: drone
  labels:
    app.kubernetes.io/name: drone
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: drone
  template:
    metadata:
      labels:
        app.kubernetes.io/name: drone
    spec:
      containers:
      - name: runner
        image: drone/drone-runner-kube:latest
        ports:
        - containerPort: 3000
        env:
        - name: DRONE_RPC_HOST
          value: yourServerHostOrIP
        - name: DRONE_RPC_PROTO
          value: http
        - name: DRONE_RPC_SECRET
          value: yourRPC

Some Helper Methods

A few helper items. Can remove the Drone Server and leverage the CLI to repair/recreate the webooks in the repositories.

Remove Drone

sudo docker ps
sudo docker kill dronePodName
sudo docker container rm drone

Install CLI

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=yourServerHostOrIP
export DRONE_TOKEN=yourAuthToken

Repair Repository

This will need the Drone CLI with an admin user. For example this repo is refered as "ravilach/firstdrone"

#drone repo info ravilach/firstdrone
drone repo info your/repo
drone repo repair your/repo

Thanks for checking out the example!