mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
- Bump `follow-redirects` to fix sec scan - Remove archived plugin `Chart releaser` - Fix broken anchors ``` Exhaustive list of all broken anchors found: - Broken anchor on source page path = /docs/0.15/administration/agent-config: -> linking to /docs/0.15/usage/pipeline-syntax#step-when---conditional-execution - Broken anchor on source page path = /docs/0.15/development/docs: -> linking to /docs/0.15/development/getting-started#nodejs--yarn - Broken anchor on source page path = /docs/0.15/development/ui: -> linking to /docs/0.15/development/getting-started#nodejs--yarn -> linking to /docs/0.15/development/getting-started#debugging - Broken anchor on source page path = /docs/1.0/development/ui: -> linking to /docs/1.0/development/getting-started#debugging - Broken anchor on source page path = /docs/2.0/administration/agent-config: -> linking to /docs/2.0/administration/backends/kubernetes#configuration - Broken anchor on source page path = /docs/2.0/administration/server-config: -> linking to forges/github#configuration (resolved as: /docs/2.0/administration/forges/github#configuration) - Broken anchor on source page path = /docs/2.0/development/ui: -> linking to /docs/2.0/development/getting-started#debugging - Broken anchor on source page path = /docs/2.0/usage/matrix-workflows: -> linking to /docs/2.0/administration/backends/kubernetes#nodeSelector - Broken anchor on source page path = /docs/2.1/administration/agent-config: -> linking to /docs/2.1/administration/backends/kubernetes#configuration - Broken anchor on source page path = /docs/2.1/development/ui: -> linking to /docs/2.1/development/getting-started#debugging - Broken anchor on source page path = /docs/2.1/usage/matrix-workflows: -> linking to /docs/2.1/administration/backends/kubernetes#nodeSelector - Broken anchor on source page path = /docs/2.2/administration/agent-config: -> linking to /docs/2.2/administration/backends/local#further-configuration - Broken anchor on source page path = /docs/2.2/development/ui: -> linking to /docs/2.2/development/getting-started#debugging - Broken anchor on source page path = /docs/2.2/usage/matrix-workflows: -> linking to /docs/2.2/administration/backends/kubernetes#nodeSelector - Broken anchor on source page path = /docs/next/administration/agent-config: -> linking to /docs/next/administration/backends/local#further-configuration - Broken anchor on source page path = /docs/next/development/ui: -> linking to /docs/next/development/getting-started#debugging - Broken anchor on source page path = /docs/next/usage/matrix-workflows: -> linking to /docs/next/administration/backends/kubernetes#nodeSelector - Broken anchor on source page path = /docs/next/usage/plugins/creating-plugins: -> linking to /docs/next/usage/secrets#use-secrets-in-settings - Broken anchor on source page path = /docs/administration/agent-config: -> linking to /docs/administration/backends/local#further-configuration - Broken anchor on source page path = /docs/development/ui: -> linking to /docs/development/getting-started#debugging - Broken anchor on source page path = /docs/usage/matrix-workflows: -> linking to /docs/administration/backends/kubernetes#nodeSelector ```
144 lines
2.5 KiB
Markdown
144 lines
2.5 KiB
Markdown
# Matrix workflows
|
|
|
|
Woodpecker has integrated support for matrix workflows. Woodpecker executes a separate workflow for each combination in the matrix, allowing you to build and test against multiple configurations.
|
|
|
|
Example matrix definition:
|
|
|
|
```yaml
|
|
matrix:
|
|
GO_VERSION:
|
|
- 1.4
|
|
- 1.3
|
|
REDIS_VERSION:
|
|
- 2.6
|
|
- 2.8
|
|
- 3.0
|
|
```
|
|
|
|
Example matrix definition containing only specific combinations:
|
|
|
|
```yaml
|
|
matrix:
|
|
include:
|
|
- GO_VERSION: 1.4
|
|
REDIS_VERSION: 2.8
|
|
- GO_VERSION: 1.5
|
|
REDIS_VERSION: 2.8
|
|
- GO_VERSION: 1.6
|
|
REDIS_VERSION: 3.0
|
|
```
|
|
|
|
## Interpolation
|
|
|
|
Matrix variables are interpolated in the YAML using the `${VARIABLE}` syntax, before the YAML is parsed. This is an example YAML file before interpolating matrix parameters:
|
|
|
|
```yaml
|
|
matrix:
|
|
GO_VERSION:
|
|
- 1.4
|
|
- 1.3
|
|
DATABASE:
|
|
- mysql:8
|
|
- mysql:5
|
|
- mariadb:10.1
|
|
|
|
steps:
|
|
- name: build
|
|
image: golang:${GO_VERSION}
|
|
commands:
|
|
- go get
|
|
- go build
|
|
- go test
|
|
|
|
services:
|
|
- name: database
|
|
image: ${DATABASE}
|
|
```
|
|
|
|
Example YAML file after injecting the matrix parameters:
|
|
|
|
```diff
|
|
steps:
|
|
- name: build
|
|
- image: golang:${GO_VERSION}
|
|
+ image: golang:1.4
|
|
commands:
|
|
- go get
|
|
- go build
|
|
- go test
|
|
+ environment:
|
|
+ - GO_VERSION=1.4
|
|
+ - DATABASE=mysql:8
|
|
|
|
services:
|
|
- name: database
|
|
- image: ${DATABASE}
|
|
+ image: mysql:8
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Example matrix pipeline based on Docker image tag
|
|
|
|
```yaml
|
|
matrix:
|
|
TAG:
|
|
- 1.7
|
|
- 1.8
|
|
- latest
|
|
|
|
steps:
|
|
- name: build
|
|
image: golang:${TAG}
|
|
commands:
|
|
- go build
|
|
- go test
|
|
```
|
|
|
|
### Example matrix pipeline based on container image
|
|
|
|
```yaml
|
|
matrix:
|
|
IMAGE:
|
|
- golang:1.7
|
|
- golang:1.8
|
|
- golang:latest
|
|
|
|
steps:
|
|
- name: build
|
|
image: ${IMAGE}
|
|
commands:
|
|
- go build
|
|
- go test
|
|
```
|
|
|
|
### Example matrix pipeline using multiple platforms
|
|
|
|
```yaml
|
|
matrix:
|
|
platform:
|
|
- linux/amd64
|
|
- linux/arm64
|
|
|
|
labels:
|
|
platform: ${platform}
|
|
|
|
steps:
|
|
- name: test
|
|
image: alpine
|
|
commands:
|
|
- echo "I am running on ${platform}"
|
|
|
|
- name: test-arm-only
|
|
image: alpine
|
|
commands:
|
|
- echo "I am running on ${platform}"
|
|
- echo "Arm is cool!"
|
|
when:
|
|
platform: linux/arm*
|
|
```
|
|
|
|
:::note
|
|
If you want to control the architecture of a pipeline on a Kubernetes runner, see [the nodeSelector documentation of the Kubernetes backend](../30-administration/22-backends/40-kubernetes.md#nodeselector).
|
|
:::
|