Join our community
Gitea is open source. Star our GitHub repo, and join our community on Discord!
We are happy to announce the release of Gitea Runner 2.0.0.
This release brings job summaries, improved cancellation handling, job-level workflow syntax that was previously ignored, and a long list of reliability fixes since the 1.0.0 stable release.
Several headline features in 2.0.0 pair with Gitea 1.27 on the server side. The runner remains wire-compatible with older Gitea versions; when the server does not advertise a capability, the runner simply skips the related feature.
Workflow steps can now write to GITHUB_STEP_SUMMARY, and the runner uploads the rendered markdown when Gitea advertises support. Summaries appear in the Actions run view alongside job logs.
Cancellation handling is substantially improved:
cancelling capability so Gitea can use a transitional Cancelling state before a job is finalized as cancelled.if: always() / if: cancelled() main steps now run on cancellation, matching GitHub Actions behavior.Two jobs.<job_id> fields that were parsed from YAML but silently ignored are now implemented:
timeout-minutes — applies a deadline around the entire job (container start, pre-steps, main steps, and post-steps). Supports expression interpolation. Runner-only; no Gitea upgrade required.continue-on-error — when a job is allowed to fail, dependent jobs gated on if: success() still run, matching GitHub Actions semantics.A new optional runner.post_task_script setting runs a host executable after each task’s built-in cleanup (post steps, container teardown, bind-workdir removal). This is useful for pruning Docker images, vacuuming ephemeral disks, or resetting VM state between jobs. See the post-task script documentation for lifecycle details and timeout behavior.
ssh:// action URLs — clone actions over SSH in addition to HTTPS and HTTP.runner.action_shallow_clone, default true), with automatic fallback to a full clone when needed.container.options.network.enable_ipv6 controls IPv6 for job network creation.container.volumes entries now support expression interpolation.Docker pull credentials: Gitea Runner no longer implicitly uses DOCKER_USERNAME and DOCKER_PASSWORD workflow secrets for image pulls (#1007). These names are commonly used for registry login during image pushes, and sending them to every pull caused authentication failures against Docker Hub.
If you relied on the old implicit behavior, migrate to explicit credentials:
jobs: build: container: image: registry.example.com/image:tag credentials: username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }}For private Docker actions or service containers, use credentials on the service definition, or run docker login on the runner host before jobs start.
gitea/runner:1.0.x (or an older tag) with gitea/runner:2.0.0 in Docker Compose, Kubernetes manifests, and service units.DOCKER_USERNAME / DOCKER_PASSWORD for pulls (see breaking change above).continue-on-error at the job level, upgrade Gitea to 1.27 so workflow results reflect the intended semantics.always() cleanup steps in a staging environment before rolling out broadly.Pre-built binaries are available from the Gitea Runner downloads page.
The release is also available from the Gitea Runner release page.
Thank you to everyone who contributed code, testing, bug reports, documentation, and feedback since the 1.0.0 release.
BREAKING
DOCKER_USERNAME/DOCKER_PASSWORD secrets for image pulls (#1007)FEATURES
jobs.<job_id>.timeout-minutes (#1032)jobs.<job_id>.continue-on-error — requires Gitea 1.27 for workflow aggregation (#1032)runner.post_task_script hook after task cleanup (#1026)ssh:// action URLs (#1035)BUGFIXES
always()/cancelled() and post steps correctly on cancellation (#1043)uses: actions use the clone token (#1041)container.volumes (#1036)SetJobError against missing job-error container (#1050)FEATURES
cache.offline_mode to reuse cached actions without fetching (#966)BUGFIXES
FEATURES
BUGFIXES
moby/moby (#943)ENHANCEMENTS
source and version labels to images (#975)FEATURES
Starting job container log group (#940)BUGFIXES