woodpecker/README.md

141 lines
3.8 KiB
Markdown
Raw Normal View History

2019-07-25 11:13:13 +00:00
# Woodpecker
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
An opinionated fork of the Drone CI system.
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
- Based on the v0.8 code tree
- Focused on developer experience.
2019-06-04 07:37:15 +00:00
[![Go Report Card](https://goreportcard.com/badge/github.com/laszlocph/woodpecker)](https://goreportcard.com/report/github.com/laszlocph/woodpecker) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
2019-06-04 07:37:15 +00:00
2019-08-27 11:01:29 +00:00
![woodpecker](docs/drone.png)
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
## Table of contents
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
- [About this fork](#about-this-fork)
- [Motivation](#motivation)
- [The focus of this fork](#the-focus-of-this-fork)
- [Who uses this fork](#who-uses-this-fork)
- [Pipelines](#pipelines)
- [Getting started](#getting-started)
- [Pipeline documentation](#pipeline-documentation)
- [Plugins](#plugins)
- [Custom plugins](#custom-plugins)
- [Contributing](#contributing)
- [License](#license)
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
## About this fork
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
#### Motivation
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
Why fork? See my [motivation](docs/motivation.md)
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
#### The focus of this fork
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
This fork is not meant to compete with Drone or reimplement its enterprise features in the open.
2019-06-04 07:37:15 +00:00
2019-07-05 13:30:25 +00:00
Instead, I'm taking a proven CI system - that Drone 0.8 is - and applying a distinct set of product ideas focusing on:
2019-06-04 07:44:13 +00:00
2019-07-05 13:30:25 +00:00
- UI experience
- the developer feedback loop
- documentation and best practices
- tighter Github integration
- Kubernetes backend
with less focus on:
- niche git systems like gitea, gogs
- computing architectures like arm64
- new pipeline formats like jsonnet
#### Who uses this fork
Currently I know of one organization using this fork. With 50+ users, 130+ repos and more than 300 builds a week.
## Pipelines
#### Getting started
Place this snippet into a file called `.drone.yml`
```yaml
pipeline:
build:
image: debian:stable-slim
commands:
- echo "This is the build step"
a-test-step:
image: debian:stable-slim
commands:
- echo "Testing.."
```
The pipeline runs on the Drone CI server and typically triggered by webhooks. One benefit of the container architecture is that it runs on your laptop too:
```sh
$ drone exec --local
stable-slim: Pulling from library/debian
a94641239323: Pull complete
Digest: sha256:d846d80f98c8aca7d3db0fadd14a0a4c51a2ce1eb2e9e14a550b3bd0c45ba941
Status: Downloaded newer image for debian:stable-slim
[build:L0:0s] + echo "This is the build step"
[build:L1:0s] This is the build step
[a-test-step:L0:0s] + echo "Testing.."
[a-test-step:L1:0s] Testing..
```
Pipeline steps are commands running in container images.
These containers are wired together and they share a volume with the source code on it.
#### Pipeline documentation
See all [pipeline features](docs/usage/pipeline.md).
## Plugins
Plugins are Docker containers that perform pre-defined tasks and are configured as steps in your pipeline. Plugins can be used to deploy code, publish artifacts, send notification, and more.
Example pipeline using the Docker and Slack plugins:
```yaml
pipeline:
backend:
image: golang
commands:
- go get
- go build
- go test
docker:
image: plugins/docker
username: kevinbacon
password: pa55word
repo: foo/bar
tags: latest
notify:
image: plugins/slack
channel: developers
username: drone
```
#### Custom plugins
Plugins are Docker containers with their entrypoint set to a predefined script.
[See how an example plugin can be implemented in a bash script](docs/usage/bash_plugin.md).
## Server setup
## Contributing
2019-08-27 11:01:29 +00:00
woodpecker is Apache 2.0 licensed and accepts contributions via GitHub pull requests.
2019-07-05 13:30:25 +00:00
[How to build the project]()
## License
2019-08-27 11:01:29 +00:00
woodpecker is Apache 2.0 licensed with the source files in this repository having a header indicating which license they are under and what copyrights apply.
2019-07-05 13:30:25 +00:00
Files under the `docs/` folder is licensed under Creative Commons Attribution-ShareAlike 4.0 International Public License. It is a derivative work of the https://github.com/drone/docs git repository.