2023-07-25 10:41:58 +00:00
|
|
|
# Local backend
|
|
|
|
|
|
|
|
:::danger
|
|
|
|
The local backend will execute the pipelines on the local system without any isolation of any kind.
|
|
|
|
:::
|
|
|
|
|
|
|
|
:::note
|
|
|
|
This backend is still pretty new and can not be treated as stable. Its
|
2023-08-22 20:00:32 +00:00
|
|
|
implementation and configuration can change at any time.
|
2023-07-25 10:41:58 +00:00
|
|
|
:::
|
|
|
|
|
|
|
|
Since the code runs directly in the same context as the agent (same user, same
|
|
|
|
filesystem), a malicious pipeline could be used to access the agent
|
|
|
|
configuration especially the `WOODPECKER_AGENT_SECRET` variable.
|
|
|
|
|
|
|
|
It is recommended to use this backend only for private setup where the code and
|
|
|
|
pipeline can be trusted. You shouldn't use it for a public facing CI where
|
|
|
|
anyone can submit code or add new repositories. You shouldn't execute the agent
|
|
|
|
as a privileged user (root).
|
|
|
|
|
|
|
|
The local backend will use a random directory in $TMPDIR to store the cloned
|
|
|
|
code and execute commands.
|
|
|
|
|
|
|
|
In order to use this backend, you need to download (or build) the
|
|
|
|
[binary](https://github.com/woodpecker-ci/woodpecker/releases/latest) of the
|
|
|
|
agent, configure it and run it on the host machine.
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
### Server
|
|
|
|
|
|
|
|
Enable connection to the server from the outside of the docker environment by
|
|
|
|
exposing the port 9000:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# docker-compose.yml for the server
|
|
|
|
version: '3'
|
|
|
|
|
|
|
|
services:
|
|
|
|
woodpecker-server:
|
|
|
|
[...]
|
|
|
|
ports:
|
|
|
|
- 9000:9000
|
|
|
|
[...]
|
|
|
|
environment:
|
|
|
|
- [...]
|
|
|
|
```
|
|
|
|
|
|
|
|
### Agent
|
|
|
|
|
|
|
|
You can use the `.env` file to store environmental variables for configuration.
|
|
|
|
At the minimum you need the following information:
|
|
|
|
|
|
|
|
```ini
|
|
|
|
# .env for the agent
|
|
|
|
WOODPECKER_AGENT_SECRET=replace_with_your_server_secret
|
|
|
|
WOODPECKER_SERVER=replace_with_your_server_address:9000
|
|
|
|
```
|
|
|
|
|
|
|
|
## Running the agent
|
|
|
|
|
|
|
|
Start the agent from the directory with the `.env` file:
|
|
|
|
|
|
|
|
`woodpecker-agent`
|
|
|
|
|
|
|
|
:::note
|
|
|
|
When using the `local` backend, the
|
|
|
|
[plugin-git](https://github.com/woodpecker-ci/plugin-git) binary must be in
|
|
|
|
your `$PATH` for the default clone step to work. If not, you can still write a
|
|
|
|
manual clone step.
|
|
|
|
:::
|
|
|
|
|
|
|
|
## Further configuration
|
|
|
|
|
|
|
|
### Specify the shell to be used for a pipeline step
|
|
|
|
|
|
|
|
The `image` entry is used to specify the shell, such as Bash or Fish, that is
|
|
|
|
used to run the commands.
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .woodpecker.yml
|
|
|
|
|
|
|
|
steps:
|
|
|
|
build:
|
|
|
|
image: bash
|
|
|
|
commands:
|
|
|
|
[...]
|
|
|
|
```
|
|
|
|
|
|
|
|
### Using labels to filter tasks
|
|
|
|
|
2023-11-05 09:43:44 +00:00
|
|
|
You can use the [agent configuration options](../15-agent-config.md#woodpecker_filter_labels)
|
|
|
|
and the [pipeline syntax](../../20-usage/20-pipeline-syntax.md#labels) to only run certain
|
2023-07-25 10:41:58 +00:00
|
|
|
pipelines on certain agents. Example:
|
|
|
|
|
|
|
|
Define a `label` `type` with value `exec` for a particular agent:
|
|
|
|
|
|
|
|
```ini
|
|
|
|
# .env for the agent
|
|
|
|
|
|
|
|
WOODPECKER_FILTER_LABELS=type=exec
|
|
|
|
```
|
|
|
|
|
|
|
|
Then, use this `label` `type` with value `exec` in the pipeline definition, to
|
|
|
|
only run on this agent:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# .woodpecker.yml
|
|
|
|
|
|
|
|
labels:
|
|
|
|
type: exec
|
|
|
|
|
|
|
|
steps:
|
|
|
|
[...]
|
|
|
|
```
|