depends_on: - test - web variables: - &golang_image 'golang:1.20.2' - &node_image 'node:18-alpine' - &xgo_image 'techknowlogick/xgo:go-1.20.2' - &xgo_version 'go-1.20.2' - &platforms_release 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64,linux/ppc64le,linux/riscv64,linux/s390x,windows/amd64,freebsd/arm64,freebsd/amd64,openbsd/arm64,openbsd/amd64' - &platforms_server 'linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le,linux/riscv64' - &platforms_preview 'linux/arm/v6,linux/arm64/v8,linux/amd64,linux/riscv64,windows/amd64' - &platforms_alpine 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le' steps: vendor: image: *golang_image pull: true commands: - go mod vendor ############### # S e r v e r # ############### build-web: image: *node_image directory: web/ commands: - corepack enable - pnpm install --frozen-lockfile - pnpm build cross-compile-server: image: *xgo_image pull: true commands: - apt update - apt install -y tree - make cross-compile-server environment: PLATFORMS: linux|arm/v7;linux|arm64/v8;linux|amd64;linux|ppc64le;linux|riscv64 TAGS: bindata sqlite sqlite_unlock_notify netgo XGO_VERSION: *xgo_version publish-server-preview: image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] group: docker settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.multiarch platforms: *platforms_server tag: pull_${CI_COMMIT_PULL_REQUEST} when: event: pull_request publish-server-alpine-preview: image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] group: docker settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.alpine.multiarch platforms: *platforms_alpine tag: pull_${CI_COMMIT_PULL_REQUEST}-alpine when: event: pull_request publish-next-server: image: woodpeckerci/plugin-docker-buildx group: docker secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.multiarch platforms: *platforms_server tag: [next, "next-${CI_COMMIT_SHA:0:10}"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-next-server-alpine: image: woodpeckerci/plugin-docker-buildx group: docker secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.alpine.multiarch platforms: *platforms_alpine tag: [next-alpine, "next-${CI_COMMIT_SHA:0:10}-alpine"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-release-branch-server: image: woodpeckerci/plugin-docker-buildx group: docker secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.multiarch platforms: *platforms_server tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push publish-release-branch-server-alpine: image: woodpeckerci/plugin-docker-buildx group: docker secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.alpine.multiarch platforms: *platforms_alpine tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push release-server: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.multiarch platforms: *platforms_server # remove 'latest' on older version branches to avoid accidental downgrade tag: [latest, "${CI_COMMIT_TAG}"] when: event: tag release-server-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-server dockerfile: docker/Dockerfile.server.alpine.multiarch platforms: *platforms_alpine # remove 'latest-alpine' on older version branches to avoid accidental downgrade tag: [latest-alpine, "${CI_COMMIT_TAG}-alpine"] when: event: tag ############# # A g e n t # ############# publish-agent-preview: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.multiarch platforms: *platforms_preview tag: pull_${CI_COMMIT_PULL_REQUEST} when: event: pull_request publish-next-agent: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.multiarch platforms: *platforms_release tag: [next, "next-${CI_COMMIT_SHA:0:10}"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-next-agent-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.alpine.multiarch platforms: *platforms_alpine tag: [next-alpine, "next-${CI_COMMIT_SHA:0:10}-alpine"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-release-branch-agent: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.multiarch platforms: *platforms_release tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push publish-release-branch-agent-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.alpine.multiarch platforms: *platforms_alpine tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push release-agent: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.multiarch platforms: *platforms_release # remove 'latest' on older version branches to avoid accidental downgrade tag: [latest, "${CI_COMMIT_TAG}"] when: event: tag release-agent-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-agent dockerfile: docker/Dockerfile.agent.alpine.multiarch platforms: *platforms_alpine # remove 'latest-alpine' on older version branches to avoid accidental downgrade tag: [latest-alpine, "${CI_COMMIT_TAG}-alpine"] when: event: tag ######### # C L I # ######### publish-cli-preview: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.multiarch platforms: *platforms_preview tag: pull_${CI_COMMIT_PULL_REQUEST} when: event: pull_request publish-next-cli: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.multiarch platforms: *platforms_release tag: [next, "next-${CI_COMMIT_SHA:0:10}"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-next-cli-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.alpine.multiarch platforms: *platforms_alpine tag: [next-alpine, "next-${CI_COMMIT_SHA:0:10}-alpine"] when: branch: ${CI_REPO_DEFAULT_BRANCH} event: push publish-release-branch-cli: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.multiarch platforms: *platforms_release tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push publish-release-branch-cli-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.alpine.multiarch platforms: *platforms_alpine tag: ${CI_COMMIT_BRANCH##release/} when: branch: release/* event: push release-cli: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [docker_username, docker_password] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.multiarch platforms: *platforms_release # remove 'latest' on older version branches to avoid accidental downgrade tag: [latest, "${CI_COMMIT_TAG}"] when: event: tag release-cli-alpine: group: docker image: woodpeckerci/plugin-docker-buildx secrets: [ docker_username, docker_password ] settings: repo: woodpeckerci/woodpecker-cli dockerfile: docker/Dockerfile.cli.alpine.multiarch platforms: *platforms_alpine # remove 'latest-alpine' on older version branches to avoid accidental downgrade tag: [latest-alpine, "${CI_COMMIT_TAG}-alpine"] when: event: tag