Maven Repository

kind: maven

source condition target

Description

source

The maven "source" retrieves the latest version from a maven repository

condition

The maven "condition" tests if a version exist on a maven repository.

Parameters

Name Type Description Required
artifactid string Specifies the maven artifact artifactID
groupid string Specifies the maven artifact groupID
repositories array Repositories specifies a list of Maven repository where to look for version. Order matter, version is retrieve from the first repository with the last one being Maven Central.
repository string Specifies the maven repository url + name
url string Deprecated, please specify the Maven url in the repository
version string Specifies the maven artifact version
versionfilter object [S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.
    kind string specifies the version kind such as semver, regex, or latest
    pattern string specifies the version pattern according the version kind for semver, it is a semver constraint for regex, it is a regex pattern for time, it is a date format
    regex string specifies the regex pattern, used for regex/semver and regex/time. Output of the first capture group will be used.
    replaceall object replaceAll applies a regex replacement to version strings before filtering. This is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction.
    strict boolean strict enforce strict versioning rule. Only used for semantic versioning at this time
Note
repository can contain Basic Auth credentials following the standard notation: username:password@hostname

Example

# updatecli.yaml
name: Example with Maven resource

scms:
  default:
    kind: git
    spec:
      url: "git@github.com:olblak/charts.git"
      branch: master
      user: olblak
      email: me@olblak.com
      directory: "/home/olblak/Project/Jenkins-infra/charts"

sources:
  default:
    kind: maven
    spec:
      # optionally provide credentials as user:pass@hostname
      # using requiredEnv custom function
      repository: "repo.jenkins-ci.org/releases"
      groupid: "org.jenkins-ci.main"
      artifactid: "jenkins-war"
    transformers:
      - addsuffix: "-jdk11"

conditions:
  docker:
    name: "Test Docker Image Published on Registry with the correct tag"
    kind: "dockerimage"
    spec:
      image: "jenkins/jenkins"
  imageTag:
    name: "Test if jenkins/jenkins docker image used"
    scmid: default
    kind: yaml
    spec:
      file: "charts/jenkins/values.yaml"
      key: "jenkins.master.image"
      value: "jenkins/jenkins"

targets:
  imageTag:
    name: "jenkins/jenkins docker tag"
    kind: yaml
    scmid: default
    spec:
      file: "charts/jenkins/values.yaml"
      key: "jenkins.master.imageTag"

What it says:

Sources

Retrieve the version from a Maven source for the artifactID "jenkins-war" from the group "org.jenkins-ci.org" in the repository "releases" located on "repo.jenkins-ci.org" ⇒ 2.264 Append "jdk11" to it ⇒ 2.264-jdk11

Conditions

Then it tests two conditions:

  1. Do we have a docker image published on Dockerhub for the "jenkins/jenkins" using the tag "2.264-jdk11"? Yes, proceed, No then abort

  2. Do we have a the key jenkins.master.image set to the value "jenkins/jenkins" from the file "charts/jenkins/values.yaml" located on the git repository "git@github.com:olblak/charts.git"? ⇒ Yes, proceed, No then abort

Targets

If conditions are all met then updatecli updates, if necessary, the key "jenkins.master.imageTag" to "2.264-jdk11" for the file "charts/jenkins/values.yaml" from the git repository "git@github.com:olblak/charts.git" then commit the change to the branch master.

Top