diff --git a/.woodpecker/binaries.yaml b/.woodpecker/binaries.yaml index 51579a16e8..3b096d0cc2 100644 --- a/.woodpecker/binaries.yaml +++ b/.woodpecker/binaries.yaml @@ -38,7 +38,7 @@ steps: - apt install -y tree - make cross-compile-server environment: - PLATFORMS: linux|arm64/v8;linux|amd64;linux|riscv64;windows|amd64 + PLATFORMS: linux|arm64/v8;linux|amd64;linux|riscv64;windows|amd64;freebsd|amd64 TAGS: bindata sqlite sqlite_unlock_notify netgo ARCHIVE_IT: '1' diff --git a/.woodpecker/docker.yaml b/.woodpecker/docker.yaml index 2ed434bb80..ed7e686084 100644 --- a/.woodpecker/docker.yaml +++ b/.woodpecker/docker.yaml @@ -3,8 +3,8 @@ variables: - &node_image 'docker.io/node:24-alpine' - &xgo_image 'docker.io/techknowlogick/xgo:go-1.26.x' - &buildx_plugin 'docker.io/woodpeckerci/plugin-docker-buildx:6.1.0' - - &platforms_release 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64,linux/ppc64le,linux/riscv64,linux/s390x,freebsd/arm64,freebsd/amd64,openbsd/arm64,openbsd/amd64' - - &platforms_server 'linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le,linux/riscv64' + - &platforms_release 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64,linux/ppc64le,linux/riscv64,linux/s390x,freebsd/arm64,freebsd/amd64' + - &platforms_server 'linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le,linux/riscv64,freebsd/arm64' - &platforms_preview 'linux/amd64' - &platforms_alpine 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le' - &build_args 'CI_COMMIT_SHA=${CI_COMMIT_SHA},CI_COMMIT_BRANCH=${CI_COMMIT_BRANCH},CI_COMMIT_TAG=${CI_COMMIT_TAG}' diff --git a/Makefile b/Makefile index bbc34f11a2..63b0fe5a51 100644 --- a/Makefile +++ b/Makefile @@ -298,6 +298,10 @@ release-agent: ## Create agent binaries for release GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/windows_amd64/woodpecker-agent.exe go.woodpecker-ci.org/woodpecker/v3/cmd/agent GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent + GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/freebsd_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent + GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/freebsd_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent + GOOS=openbsd GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/openbsd_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent + GOOS=openbsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/openbsd_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent # tar binary files tar -cvzf ${DIST_DIR}/woodpecker-agent_linux_amd64.tar.gz -C ${DIST_DIR}/agent/linux_amd64 woodpecker-agent tar -cvzf ${DIST_DIR}/woodpecker-agent_linux_arm64.tar.gz -C ${DIST_DIR}/agent/linux_arm64 woodpecker-agent @@ -305,6 +309,10 @@ release-agent: ## Create agent binaries for release tar -cvzf ${DIST_DIR}/woodpecker-agent_linux_arm.tar.gz -C ${DIST_DIR}/agent/linux_arm woodpecker-agent tar -cvzf ${DIST_DIR}/woodpecker-agent_darwin_amd64.tar.gz -C ${DIST_DIR}/agent/darwin_amd64 woodpecker-agent tar -cvzf ${DIST_DIR}/woodpecker-agent_darwin_arm64.tar.gz -C ${DIST_DIR}/agent/darwin_arm64 woodpecker-agent + tar -cvzf ${DIST_DIR}/woodpecker-agent_freebsd_amd64.tar.gz -C ${DIST_DIR}/agent/freebsd_amd64 woodpecker-agent + tar -cvzf ${DIST_DIR}/woodpecker-agent_freebsd_arm64.tar.gz -C ${DIST_DIR}/agent/freebsd_arm64 woodpecker-agent + tar -cvzf ${DIST_DIR}/woodpecker-agent_openbsd_amd64.tar.gz -C ${DIST_DIR}/agent/openbsd_amd64 woodpecker-agent + tar -cvzf ${DIST_DIR}/woodpecker-agent_openbsd_arm64.tar.gz -C ${DIST_DIR}/agent/openbsd_arm64 woodpecker-agent # zip binary files rm -f ${DIST_DIR}/woodpecker-agent_windows_amd64.zip zip -j ${DIST_DIR}/woodpecker-agent_windows_amd64.zip ${DIST_DIR}/agent/windows_amd64/woodpecker-agent.exe @@ -318,6 +326,10 @@ release-cli: ## Create cli binaries for release GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/windows_amd64/woodpecker-cli.exe go.woodpecker-ci.org/woodpecker/v3/cmd/cli GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli + GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/freebsd_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli + GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/freebsd_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli + GOOS=openbsd GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/openbsd_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli + GOOS=openbsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/openbsd_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli # tar binary files tar -cvzf ${DIST_DIR}/woodpecker-cli_linux_amd64.tar.gz -C ${DIST_DIR}/cli/linux_amd64 woodpecker-cli tar -cvzf ${DIST_DIR}/woodpecker-cli_linux_arm64.tar.gz -C ${DIST_DIR}/cli/linux_arm64 woodpecker-cli @@ -325,6 +337,10 @@ release-cli: ## Create cli binaries for release tar -cvzf ${DIST_DIR}/woodpecker-cli_linux_arm.tar.gz -C ${DIST_DIR}/cli/linux_arm woodpecker-cli tar -cvzf ${DIST_DIR}/woodpecker-cli_darwin_amd64.tar.gz -C ${DIST_DIR}/cli/darwin_amd64 woodpecker-cli tar -cvzf ${DIST_DIR}/woodpecker-cli_darwin_arm64.tar.gz -C ${DIST_DIR}/cli/darwin_arm64 woodpecker-cli + tar -cvzf ${DIST_DIR}/woodpecker-cli_freebsd_amd64.tar.gz -C ${DIST_DIR}/cli/freebsd_amd64 woodpecker-cli + tar -cvzf ${DIST_DIR}/woodpecker-cli_freebsd_arm64.tar.gz -C ${DIST_DIR}/cli/freebsd_arm64 woodpecker-cli + tar -cvzf ${DIST_DIR}/woodpecker-cli_openbsd_amd64.tar.gz -C ${DIST_DIR}/cli/openbsd_amd64 woodpecker-cli + tar -cvzf ${DIST_DIR}/woodpecker-cli_openbsd_arm64.tar.gz -C ${DIST_DIR}/cli/openbsd_arm64 woodpecker-cli # zip binary files rm -f ${DIST_DIR}/woodpecker-cli_windows_amd64.zip zip -j ${DIST_DIR}/woodpecker-cli_windows_amd64.zip ${DIST_DIR}/cli/windows_amd64/woodpecker-cli.exe diff --git a/docs/docs/30-administration/00-general.md b/docs/docs/30-administration/00-general.md index 0ce0ee088d..9937ff08cc 100644 --- a/docs/docs/30-administration/00-general.md +++ b/docs/docs/30-administration/00-general.md @@ -41,3 +41,5 @@ Images are pushed to DockerHub and Quay. - woodpecker-agent ([DockerHub](https://hub.docker.com/r/woodpeckerci/woodpecker-agent) or [Quay](https://quay.io/repository/woodpeckerci/woodpecker-agent)) - woodpecker-cli ([DockerHub](https://hub.docker.com/r/woodpeckerci/woodpecker-cli) or [Quay](https://quay.io/repository/woodpeckerci/woodpecker-cli)) - woodpecker-autoscaler ([DockerHub](https://hub.docker.com/r/woodpeckerci/autoscaler)) + +For the full list of operating systems and architectures each component is built for, along with which execution backends are supported on each platform, see [Supported platforms](./05-installation/05-supported-platforms.md). diff --git a/docs/docs/30-administration/05-installation/05-supported-platforms.md b/docs/docs/30-administration/05-installation/05-supported-platforms.md new file mode 100644 index 0000000000..0a3eb5d2d2 --- /dev/null +++ b/docs/docs/30-administration/05-installation/05-supported-platforms.md @@ -0,0 +1,57 @@ +# Supported platforms + +Woodpecker is shipped as container images and as pre-built binaries on the [GitHub releases](https://github.com/woodpecker-ci/woodpecker/releases/latest) page. Not every component is available for every platform: the server and the Docker/Kubernetes backends are Linux-centric, while the agent and CLI run on a wider set of operating systems via the Local backend. + +## Components + +| Component | Purpose | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `woodpecker-server` | Web UI, API, webhook receiver, pipeline scheduler. | +| `woodpecker-agent` | Executes pipeline workflows via a backend ([Docker](../10-configuration/11-backends/10-docker.md), [Kubernetes](../10-configuration/11-backends/20-kubernetes.md), [Local](../10-configuration/11-backends/30-local.md)). | +| `woodpecker-cli` | Command-line utility for interacting with the server. | +| `plugin-git` | Default clone plugin, invoked automatically by the agent at the start of every workflow. Distributed as a container image; binaries are also published for use with the Local backend. | + +## Component / platform matrix + +The table lists what is officially built and published by the Woodpecker project. "Image" means a container image is pushed to DockerHub and Quay. "Binary" means a pre-built tarball or `.exe` is attached to the GitHub release. + +| OS / Architecture | server | agent | cli | plugin-git | +| ------------------------------------ | -------------- | -------------- | -------------- | -------------- | +| linux / amd64 | Image + Binary | Image + Binary | Image + Binary | Image + Binary | +| linux / arm64 (arm64/v8) | Image + Binary | Image + Binary | Image + Binary | Image + Binary | +| linux / arm/v7 | Image | Image + Binary | Image + Binary | Image + Binary | +| linux / arm/v6 | Image | Image | Image | Image | +| linux / 386 | Image | Image | Image | Image | +| linux / ppc64le | Image | Image | Image | Image | +| linux / riscv64 | Image + Binary | Image + Binary | Image + Binary | Image | +| linux / s390x | Image | Image | Image | Image | +| windows / amd64 | Binary | Binary | Binary | Binary | +| windows / arm64 | – | – | – | Binary | +| darwin / amd64 (macOS Intel) | – | Binary | Binary | Binary | +| darwin / arm64 (macOS Apple Silicon) | – | Binary | Binary | Binary | +| freebsd / amd64 | Image + Binary | Image + Binary | Image + Binary | Binary | +| freebsd / arm64 | – | Image + Binary | Image + Binary | Binary | +| openbsd / amd64 | – | Binary | Binary | Binary | +| openbsd / arm64 | – | Binary | Binary | Binary | + +DEB and RPM packages are produced for `linux/amd64` and `linux/arm64`; see the [Distribution packages](./30-packages.md) page for download links and systemd unit examples. + +## Backend support per platform + +The agent can run on any platform listed above, but the available execution backends depend on the host operating system. + +| Backend | Linux | Windows | macOS | FreeBSD | OpenBSD | +| -------------------------------------------------------------- | --------- | ---------------------- | --------- | ---------------------- | --------- | +| [Docker](../10-configuration/11-backends/10-docker.md) | Supported | Supported[^win-docker] | – | [WIP][^freebsd-docker] | – | +| [Kubernetes](../10-configuration/11-backends/20-kubernetes.md) | Supported | – | – | – | – | +| [Local](../10-configuration/11-backends/30-local.md) | Supported | Supported | Supported | Supported | Supported | + +[^win-docker]: Works through WSL2 with Docker Desktop, and with native Windows containers. + +[^freebsd-docker]: FreeBSD Docker backend support is a work in progress; see [woodpecker-ci/woodpecker#6655](https://github.com/woodpecker-ci/woodpecker/issues/6655). + +Notes: + +- The **Docker** and **Kubernetes** backends require a Linux host on the agent because they rely on Linux container runtimes. On Windows, Docker is available via WSL2 or Windows containers (see footnote above). Running the agent on macOS or OpenBSD restricts you to the Local backend. +- The **Local** backend runs pipeline commands directly on the agent host with no isolation. It is the only backend available on macOS and OpenBSD, and is intended for trusted, private setups only. See the [Local backend documentation](../10-configuration/11-backends/30-local.md) for the full security notes. +- `plugin-git` is invoked as a container by default. On hosts where the Docker and Kubernetes backends are unavailable, configure the Local backend to use the [`plugin-git` binary](https://github.com/woodpecker-ci/plugin-git/releases/latest) instead, or disable the clone step and clone manually in the pipeline. diff --git a/docs/docs/30-administration/05-installation/30-packages.md b/docs/docs/30-administration/05-installation/30-packages.md index 0b346a9bc8..58df3ebe2d 100644 --- a/docs/docs/30-administration/05-installation/30-packages.md +++ b/docs/docs/30-administration/05-installation/30-packages.md @@ -1,10 +1,16 @@ # Distribution packages +:::tip +For a full list of operating systems and architectures that Woodpecker is built for, including which components are available on each, see [Supported platforms](./05-supported-platforms.md). +::: + ## Official packages - DEB - RPM +DEB and RPM packages are built for `linux/amd64` and `linux/arm64`. For other architectures, use the binary tarballs or container images linked from the [Supported platforms](./05-supported-platforms.md) page. + The pre-built packages are available on the [GitHub releases](https://github.com/woodpecker-ci/woodpecker/releases/latest) page. The packages can be installed using the package manager of your distribution. ```Shell diff --git a/docs/docs/30-administration/10-configuration/11-backends/30-local.md b/docs/docs/30-administration/10-configuration/11-backends/30-local.md index fe5f66149a..261351499f 100644 --- a/docs/docs/30-administration/10-configuration/11-backends/30-local.md +++ b/docs/docs/30-administration/10-configuration/11-backends/30-local.md @@ -27,6 +27,8 @@ code and execute commands. In order to use this backend, you need to download (or build) the [agent](https://github.com/woodpecker-ci/woodpecker/releases/latest), configure it and run it on the host machine. +The local backend is supported on Windows, macOS, FreeBSD and OpenBSD; see [Supported platforms](../../05-installation/05-supported-platforms.md) for the full component and backend matrix. + ## Step specific configuration ### Shell