forked from woodpecker-ci/woodpecker
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
83 changed files
with
9,470 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Welcome to Woodpecker | ||
|
||
Woodpecker is a simple yet powerful CI/CD engine with great extensibility. It focuses on executing pipelines inside [containers](https://opencontainers.org/). | ||
If you are already using containers in your daily workflow, you'll for sure love Woodpecker. | ||
|
||
![woodpecker](woodpecker.png) | ||
|
||
## `.woodpecker.yaml` | ||
|
||
- Place your pipeline in a file named `.woodpecker.yaml` in your repository | ||
- Pipeline steps can be named as you like | ||
- Run any command in the commands section | ||
|
||
```yaml title=".woodpecker.yaml" | ||
steps: | ||
- name: build | ||
image: debian | ||
commands: | ||
- echo "This is the build step" | ||
- name: a-test-step | ||
image: debian | ||
commands: | ||
- echo "Testing.." | ||
``` | ||
### Steps are containers | ||
- Define any container image as context | ||
- either use your own and install the needed tools in a custom image | ||
- or search for available images that are already tailored for your needs in image registries like [Docker Hub](https://hub.docker.com/search?type=image) | ||
- List the commands that should be executed in the container | ||
```diff | ||
steps: | ||
- name: build | ||
- image: debian | ||
+ image: mycompany/image-with-awscli | ||
commands: | ||
- aws help | ||
``` | ||
### File changes are incremental | ||
- Woodpecker clones the source code in the beginning | ||
- File changes are persisted throughout individual steps as the same volume is being mounted in all steps | ||
```yaml title=".woodpecker.yaml" | ||
steps: | ||
- name: build | ||
image: debian | ||
commands: | ||
- touch myfile | ||
- name: a-test-step | ||
image: debian | ||
commands: | ||
- cat myfile | ||
``` | ||
## Plugins are straightforward | ||
- If you copy the same shell script from project to project | ||
- Pack it into a plugin instead | ||
- And make the yaml declarative | ||
- Plugins are Docker images with your script as an entrypoint | ||
```dockerfile title="Dockerfile" | ||
FROM laszlocloud/kubectl | ||
COPY deploy /usr/local/deploy | ||
ENTRYPOINT ["/usr/local/deploy"] | ||
``` | ||
|
||
```bash title="deploy" | ||
kubectl apply -f $PLUGIN_TEMPLATE | ||
``` | ||
|
||
```yaml title=".woodpecker.yaml" | ||
steps: | ||
deploy-to-k8s: | ||
image: laszlocloud/my-k8s-plugin | ||
settings: | ||
template: config/k8s/service.yaml | ||
``` | ||
See [plugin docs](./20-usage/51-plugins/10-overview.md). | ||
## Continue reading | ||
- [Create a Woodpecker pipeline for your repository](./20-usage/10-intro.md) | ||
- [Setup your own Woodpecker instance](./30-administration/00-deployment/00-overview.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Getting started | ||
|
||
## Repository Activation | ||
|
||
To activate your project navigate to your account settings. You will see a list of repositories which can be activated with a simple toggle. When you activate your repository, Woodpecker automatically adds webhooks to your forge (e.g. GitHub, Gitea, ...). | ||
|
||
Webhooks are used to trigger pipeline executions. When you push code to your repository, open a pull request, or create a tag, your forge will automatically send a webhook to Woodpecker which will in turn trigger the pipeline execution. | ||
|
||
![repository list](repo-list.png) | ||
|
||
## Required Permissions | ||
|
||
The user who enables a repo in Woodpecker must have `Admin` rights on that repo, so that Woodpecker can add the webhook. | ||
|
||
:::note | ||
Note that manually creating webhooks yourself is not possible. | ||
This is because webhooks are signed using a per-repository secret key which is not exposed to end users. | ||
::: | ||
|
||
## Configuration | ||
|
||
To configure your pipeline you must create a `.woodpecker.yaml` file in the root of your repository. The `.woodpecker.yaml` file is used to define your pipeline steps. | ||
|
||
:::note | ||
We support most of YAML 1.2, but preserve some behavior from 1.1 for backward compatibility. | ||
Read more at: [https://github.com/go-yaml/yaml](https://github.com/go-yaml/yaml/tree/v3) | ||
::: | ||
|
||
Example pipeline configuration: | ||
|
||
```yaml | ||
steps: | ||
- name: build | ||
image: golang | ||
commands: | ||
- go get | ||
- go build | ||
- go test | ||
|
||
services: | ||
- name: postgres | ||
image: postgres:9.4.5 | ||
environment: | ||
- POSTGRES_USER=myapp | ||
``` | ||
Example pipeline configuration with multiple, serial steps: | ||
```yaml | ||
steps: | ||
- name: backend | ||
image: golang | ||
commands: | ||
- go get | ||
- go build | ||
- go test | ||
|
||
- name: frontend | ||
image: node:6 | ||
commands: | ||
- npm install | ||
- npm test | ||
|
||
- name: notify | ||
image: plugins/slack | ||
channel: developers | ||
username: woodpecker | ||
``` | ||
## Execution | ||
To trigger your first pipeline execution you can push code to your repository, open a pull request, or push a tag. Any of these events triggers a webhook from your forge and execute your pipeline. |
Oops, something went wrong.