Skip to content
Try Gitea Cloud ☁️ for 30 days → Accelerate your Development & Deploys!
This is the documentation of the next version, still under development. See the latest release.

Compared to GitHub Actions

Even though Gitea Actions is designed to be compatible with GitHub Actions, there are some differences between them.

Gitea Actions supports defining actions via absolute URL, which means that you can use actions from any git repository. Like uses: https://github.com/actions/checkout@v4 or uses: http://your_gitea.com/owner/repo@branch.

Gitea Actions supports writing actions in Go. See Creating Go Actions.

Support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly on schedule

Section titled “Support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly on schedule”

Github Actions doesn’t support that. https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule

See Workflow syntax for GitHub Actions.

It’s ignored by Gitea Actions now.

See Workflow syntax for GitHub Actions.

Gitea Actions supports:

  • Static strings: runs-on: self-hosted
  • Arrays of labels: runs-on: [linux, self-hosted]
  • String expressions: runs-on: ${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}
  • Arrays containing expressions: runs-on: [linux, "${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}"]

The GITEA_TOKEN for a job running within a repository should be able to publish to the associated package repository (i.e. to upload OCI images). See the “packages” scope for the “default access” in Automatic token authentication.

This is not implemented in Gitea Actions now. A workaround for Gitea Actions is to use a Personal Access Token (PAT). See this github issue and comment for tracking this feature.

Problem Matchers are a way to scan the output of actions for a specified regex pattern and surface that information prominently in the UI. See Problem matchers.

It’s ignored by Gitea Actions now.

See Creating an annotation for an error

It’s ignored by Gitea Actions now.

For expressions, Gitea Actions supports standard GitHub functions (e.g. success(), failure(), always(), cancelled(), format(), toJSON()) and context variables (like github, matrix, vars, env).

Pre and Post steps don’t have their own section in the job log user interface.

Services steps don’t have their own section in the job log user interface.

Gitea supports permissions and jobs.<job_id>.permissions to control the default GITEA_TOKEN permissions.

The effective permissions are clamped by the repository/owner settings and are further restricted for fork pull requests and cross-repository access. GitHub-only scopes such as statuses, checks, deployments, id-token, security-events, and pages are not supported, while Gitea-specific scopes such as code, releases, wiki, and projects are available.

See Actions job token permissions.

Previously (Pre 1.21.0), [actions].DEFAULT_ACTIONS_URL defaulted to https://gitea.com. We have since restricted this option to only allow two values (github and self). When set to github, the new default, Gitea will download non-fully-qualified actions from https://github.com. For example, if you use uses: actions/checkout@v4, it will download the checkout repository from https://github.com/actions/checkout.git.

If you want to download an action from another git hoster, you can use an absolute URL, e.g. uses: https://gitea.com/actions/checkout@v4.

If your Gitea instance is in an intranet or a restricted area, you can set the URL to self to only download actions from your own instance by default. Of course, you can still use absolute URLs in workflows.

More details about the [actions].DEFAULT_ACTIONS_URL configuration can be found in the Configuration Cheat Sheet

Context availability is not checked, so you can use the env context on more places. See Context availability.