Woodpecker
Woodpecker is a simple yet extensible open-source CI engine (licensed under Apache 2.0), a community fork of Drone CI. It is the Continuous Integration part of the h8lio factory and acts as the link between your sources and the OCI image registry.
Reference
Section titled “Reference”- Instance: https://ci.h8l.io
- Site: https://woodpecker-ci.org
- Sources: https://github.com/woodpecker-ci/woodpecker
- Documentation: https://woodpecker-ci.org/docs/intro
- Plugins: https://woodpecker-ci.org/plugins
Pipeline syntax
Section titled “Pipeline syntax”A pipeline is defined by a .woodpecker.yml file at the root of your
repository. When you create a Service in h8lio, this file is scaffolded for you,
already wired to build your image and push it to your private registry. Each
step runs in its own container, and the registry credentials are injected as
Woodpecker secrets.
The generated pipeline has three steps:
- build runs on every push and tag. For a Spring Boot service it builds and verifies the JAR with Maven; for other stacks it leaves a placeholder command for you to fill in.
- release runs on a git tag and pushes a versioned image (the
vprefix is stripped, so the tagv1.2.3produces the image tag1.2.3). - latest runs on a push and pushes the
latestimage tag.
Images are built and pushed with the kaniko plugin and enriched with OCI annotations (git revision, version, build date, source URL).
# Woodpecker integration pipelinesteps: - name: build when: - event: [push, tag] # maven image (Spring Boot stack) image: maven:3-eclipse-temurin-25-alpine commands: - mvn verify -B -V - java -Djarmode=tools -jar target/*.jar extract --layers --launcher --destination target/extracted
# pushes a versioned image on a git tag - name: release when: - event: tag image: woodpeckerci/plugin-kaniko settings: registry: registry.h8l.io repo: your-domain/your-service username: from_secret: registry_username password: from_secret: registry_password # strip the 'v' prefix: tag v1.2.3 -> image tag 1.2.3 tags: ${CI_COMMIT_TAG##v} build_args: - GIT_REVISION=${CI_COMMIT_SHA} - BUILD_VERSION=${CI_COMMIT_TAG##v} - BUILD_DATE=${CI_PIPELINE_CREATED} - SOURCE_URL=${CI_REPO_URL}
# pushes the 'latest' image on a push - name: latest when: - event: push image: woodpeckerci/plugin-kaniko settings: registry: registry.h8l.io repo: your-domain/your-service username: from_secret: registry_username password: from_secret: registry_password tags: latest build_args: - GIT_REVISION=${CI_COMMIT_SHA} - BUILD_VERSION=latest - BUILD_DATE=${CI_PIPELINE_CREATED} - SOURCE_URL=${CI_REPO_URL}References: