--- date: "2023-04-27T15:00:00+08:00" slug: "comparison" sidebar_position: 120 --- # Compared to GitHub Actions Even though Gitea Actions is designed to be compatible with GitHub Actions, there are some differences between them. ## Additional features ### Absolute action URLs 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`. ### Actions written in Go Gitea Actions supports writing actions in Go. See [Creating Go Actions](https://blog.gitea.com/creating-go-actions/). ### 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 ## Unsupported workflows syntax ### `jobs..timeout-minutes` See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes). It's ignored by Gitea Actions now. ### `jobs..continue-on-error` See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error). It's ignored by Gitea Actions now. ### `jobs..environment` See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment). It's ignored by Gitea Actions now. ### Complex `runs-on` See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on). Gitea Actions only supports `runs-on: xyz` or `runs-on: [xyz]` now. ## Missing features ### Package repository authorization 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](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token). 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](https://github.com/go-gitea/gitea/issues/23642#issuecomment-2119876692) for tracking this feature. ### Problem Matchers 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](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md). It's ignored by Gitea Actions now. ### Create an error annotation See [Creating an annotation for an error](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error) It's ignored by Gitea Actions now. ### Expressions For [expressions](https://docs.github.com/en/actions/learn-github-actions/expressions), only [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) is supported. ## Missing UI features ### Pre and Post steps Pre and Post steps don't have their own section in the job log user interface. ### Services steps Services steps don't have their own section in the job log user interface. ## Different behavior ### Job token permissions (`permissions`) Gitea supports `permissions` and `jobs..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](token-permissions.md). ### Downloading actions 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](../../administration/config-cheat-sheet.md#actions-actions)。 ### Context availability Context availability is not checked, so you can use the env context on more places. See [Context availability](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability).