sourceconditiontarget

✔

✔

✗

Description

The gitea/tag resource queries the tags of a repository hosted on Gitea, through the Gitea API rather than over the git protocol.

source

Returns the tag matching versionfilter.

condition

Tests that tag exists in the repository.

target

Not supported - a target fails with target not supported for the plugin Gitea Tags. Say so on the issue tracker if you would use one.

Note
An scm attached to a condition is ignored, with a warning. The lookup always goes to the Gitea API.
Tip
To work with tags over the git protocol instead, on any host (and to create one), use gittag.

Parameters

NameTypeDescriptionRequired
ownerstring

“owner” defines the owner of the Gitea repository.

compatible:

  • source
  • condition

example:

  • owner: updatecli
repositorystring

“repository” defines the name of the Gitea repository for a specific owner.

compatible:

  • source
  • condition

example:

  • repository: updatecli
tagstring

“tag” defines the name of the tag to check.

compatible:

  • condition

default: the output of the associated source.

example:

  • tag: v1.0.0
tokenstring

“token” defines the credential used to authenticate with the Gitea API.

remark:

  • a token is sensitive information. Do not set it directly in the manifest. Use an environment variable or a SOPS file instead.
  • {{ requiredEnv "GITEA_TOKEN" }} retrieves the token from the environment variable “GITEA_TOKEN”.
  • {{ .gitea.token }} retrieves the token from a SOPS file. See https://github.com/getsops/sops for more information about SOPS files.
  • in a “gitea/pullrequest” action, the value is inherited from the scm when unset.
urlstring

“url” defines the Gitea url to interact with.

remark:

  • “https://” is added when the url has no “https://” or “http://” prefix.
  • in a “gitea/pullrequest” action, the value is inherited from the scm when unset.

example:

  • url: gitea.com
  • url: https://gitea.example.com
usernamestring

“username” defines the username used to authenticate with the Gitea API.

remark:

  • in a “gitea/pullrequest” action, the value is inherited from the scm when unset.
versionfilterobject

“versionfilter” defines the version pattern and kind used to select a tag.

compatible:

  • source

default: kind: latest

remark:

  • accepted kinds include “latest”, “semver” and “regex”.

example:

  • versionfilter: kind: semver pattern: “~1.2”
    kindstring

“kind” defines the versioning scheme used to select a version.

default: latest

remark:

  • accepted values are “latest”, “semver”, “regex”, “regex/semver”, “time”, “regex/time”, “lex” and “pep440”.
  • “latest” returns the last version of the list.
  • “lex” sorts the versions lexicographically and returns the last one.
  • “pep440” follows https://peps.python.org/pep-0440/

example:

  • kind: semver
    patternstring

“pattern” defines the version pattern, according to “kind”.

default:

  • latest: “latest”
  • semver and pep440: “*”
  • regex: “.*”
  • time and regex/time: “2006-01-02”

remark:

  • for “latest”, “latest” returns the last version, any other value must match a version exactly.
  • for “semver” and “regex/semver”, it is a semantic versioning constraint.
  • for “pep440”, it is a pep440 version specifier.
  • for “regex”, it is a regular expression.
  • for “time” and “regex/time”, it is a Go date layout.
  • ignored by “lex”.

example:

  • pattern: ~1.2
  • pattern: “>=1.0.0 <2.0.0”
  • pattern: ^v\d+.\d+.\d+$
    regexstring

“regex” defines the regular expression extracting the version from each entry.

remark:

  • only used by the kinds “regex/semver” and “regex/time”.
  • the value of the first capture group is used as the version.

example:

  • regex: ^v(\d+.\d+.\d+)$
    replaceallobject

“replaceall” applies a regular expression replacement to each version before filtering.

remark:

  • only used by the kinds “regex”, “regex/semver” and “regex/time”.
  • the replacement runs before “pattern” or “regex” is evaluated.

example:

replaceall:
  pattern: "_"
  replacement: "."

turns “curl-8_15_0” into “curl-8.15.0”.

    strictboolean

“strict” enforces strict semantic versioning rules when parsing versions.

default: false

remark:

  • only used by the kinds “semver” and “regex/semver”.

owner and repository are mandatory. url points at your Gitea instance, e.g. try.gitea.io. There is no default.

tag

Condition only - the tag being checked.

versionfilter

Source only. kind: semver is the usual choice for release tags. See the "Version Filtering" page.

Authentication

token authenticates against the Gitea API. It is sensitive, so read it from the environment or a SOPS file rather than writing it into the manifest:

spec:
  url: try.gitea.io
  token: '{{ requiredEnv "GITEA_TOKEN" }}'
  owner: updatecli
  repository: updatecli

Reading a public repository works without any credential.

Example

# updatecli.yaml
name: "Show Gitea tag usage"

sources:
  default:
    name: "Get tag using versionfilter from a Gitea repository"
    kind: "gitea/tag"
    spec:
      url: "try.gitea.io"
      owner: "olblak"
      repository: "updatecli-test"
      versionfilter:
        kind: "semver"
        pattern: "~0.0"

  latest:
    name: "Get latest tag tag from a Gitea repository"
    kind: "gitea/tag"
    spec:
      url: "try.gitea.io"
      owner: "olblak"
      repository: "updatecli-test"

conditions:
  default:
    name: "Test tag '0.0.2' exist on the Gitea repository"
    kind: "gitea/tag"
    disablesourceinput: true
    spec:
      url: "try.gitea.io"
      owner: "olblak"
      repository: "updatecli-test"
      tag: "0.0.2"

  sourcedefault:
    name: "Test that the tag retrieved from source 'default' exist on the Gitea repository"
    kind: "gitea/tag"
    sourceid: "default"
    spec:
      url: "try.gitea.io"
      owner: "olblak"
      repository: "updatecli-test"

  latest:
    name: "Test that the tag retrieved from source 'latest' exist on the Gitea repository"
    kind: "gitea/tag"
    sourceid: "latest"
    spec:
      url: "try.gitea.io"
      owner: "olblak"
      repository: "updatecli-test"