The runner now uses the `git` command line instead of go-git to download actions and reusable workflows. go-git had recurring bugs and does not support SHA-256 repositories, and full clones of actions are several times faster. `builtin:checkout` now runs `git` where the job runs and behaves like `actions/checkout`: 1. A branch is checked out as a local branch tracking `origin`, tag and pull request runs keep their ref, and a triggering tag that moved fails the step. 1. Later steps can fetch and push with the persisted token or SSH key. 1. It supports the `ssh-*`, `lfs`, `submodules`, `sparse-checkout`, `filter`, `fetch-tags`, `clean`, `persist-credentials`, `show-progress` and `set-safe-directory` inputs and the `ref` and `commit` outputs. 1. SHA-256 repositories work for actions, reusable workflows and `builtin:checkout`. Git keeps the token off its command line, ignores `GIT_DIR` and similar variables inherited by the runner, and keeps action files LF regardless of `core.autocrlf`. A cancelled job lets git remove its lock files. This is a breaking change: the runner needs Git 2.34.1 or newer on its `PATH`, and so do job images that use `builtin:checkout`. The official runner images include it. Fixes: https://gitea.com/gitea/runner/issues/1077 Fixes: https://gitea.com/gitea/runner/issues/1267 Fixes: https://gitea.com/gitea/runner/issues/1279 Fixes: https://gitea.com/gitea/runner/issues/1284 Fixes: https://gitea.com/gitea/runner/issues/1285 Co-authored-by: silverwind <[email protected]> Co-authored-by: silverwind <[email protected]> Co-authored-by: Lunny Xiao <[email protected]> Reviewed-on: https://gitea.com/gitea/runner/pulls/1277 Reviewed-by: Lunny Xiao <[email protected]> Reviewed-by: silverwind <[email protected]> Co-authored-by: bircni <[email protected]>
2.3 KiB
Built-in actions
Built-in actions ship with the runner, so a job needs no action download and no Node in its image.
- uses: builtin:checkout
checkout
Works like actions/checkout with these inputs. Any other input fails the step. It runs git where the job runs, see the prerequisites.
| Input | Default |
|---|---|
repository |
github.repository |
ref |
the triggering ref and commit, or the default branch of another repository |
token |
github.token |
ssh-key |
empty, a private key fetches over SSH instead |
ssh-known-hosts |
empty, host keys trusted besides ~/.ssh/known_hosts |
ssh-strict |
true, rejects unknown host keys |
ssh-user |
the user of the repository's SSH URL, else git |
persist-credentials |
true, later steps of the job can fetch and push with token or ssh-key |
path |
workspace root |
clean |
true, removes untracked files, also in submodules |
filter |
empty, a partial clone filter such as blob:none |
sparse-checkout |
empty, the paths to check out, one per line |
sparse-checkout-cone-mode |
true, false reads sparse-checkout as patterns |
fetch-depth |
1, 0 for the full history of every branch and tag |
fetch-tags |
false, true fetches every tag |
show-progress |
true, shows the fetch progress |
lfs |
false, true downloads Git LFS files |
submodules |
false, true checks out submodules, recursive also theirs |
set-safe-directory |
true, lets checkout's git work in a directory another user owns |
A branch is checked out as a local branch tracking origin, a tag or commit as a detached HEAD. A triggering tag that moved since the event fails the step. The step outputs ref and commit like actions/checkout.
Persisted credentials end with the job. token is only sent to github.server_url, while ssh-key is offered to any SSH host, as with actions/checkout. Without ssh-key, submodule URLs of the form git@<server host>: are fetched from github.server_url with token. With ssh-key, the repository is fetched from the SSH URL in the event's repository.ssh_url, or from the server's host on port 22.
With gitea-runner exec, checking out the workflow's own repository copies your local working directory, unless --no-skip-checkout or ssh-key is set.