Git

kind: git

Description

The "scm" of kind git, defines parameters to interact with a git repository. It is then referenced from another "resource" by using the key scmID. Depending on the resource that referenced the git configuration, the behavior will change.

source

When a source resource references a scm configuration, then it usually means using a file from that repository.

condition

When a condition references a scm configuration, then it usually means using a file from that repository.

target

When a target references a scm configuration, it usually means pushing file to that repository.

Parameters

NameRequiredDefaultDescription

url

Define Git repository url, username and password can’t be embedded inside the url as it’s not supported, instead use specific username/password settings

username

Define the username used to authenticate with the git repository

password

Define the password used to authenticate with the git repository

branch

master

Define the git branch

user

Define Git user used by git config

email

Define Git email used by the git config

force

false

Run git push using --force option

directory

Default to tmp location, /tmp on linux

Define where to clone the git repository

commitMessage

[T] Customize commit message. More information here

gpg

[T] Sign commit with a GPG key. More information here

GPG

Updatecli can sign commits using a private GPG key if configured accordingly.


NameRequiredDefaultDescription

signingkey

Defines the armored private gpg key

password

Defines the gpg key password

CommitMessage

Updatecli uses conventional commits as describe on www.conventionnalcommits.org.
The goal is to add human and machine readable meaning to commit messages

By default, Updatecli generates a commit message using the default type "chore" and split long title message into the body like:


Author: olblak <updatecli@updatecli.io>
Date:   Tue May 4 15:41:44 2021 +0200

    chore: Update key "dependencies[0].version" from file "charts/jenkins/r...

    ... equirements.yaml"

    Made with ❤️️  by updatecli

NameRequiredDefaultDescription

type

chore

Specify commit type

scope

Specify commit scope

footer

Specify commit footer message

title

Override default body message

hideCredit

Remove "Made with ❤️️ by updatecli" from commit message body

body

Override default body message

Authentication

At the moment they are two ways to authentication with a git repository, either using a username/password` from the updatecli configuration, or relying on the local ssh-agent.

Example

updatecli.yaml

---
title: "Example Git scm"

scms:
  scenario-source:
    kind: git 
    spec:
      username: "git username used for authentication"
      password: 'git password used for authentication'
      url: "https://github.com/updatecli/experiment.git"
      branch: "main"

  scenario-condition:
    kind: git 
    spec:
      url: "https://github.com/updatecli/updatecli.git"
      branch: "main"

  scenario-target:
    kind: git 
    spec:
      url: "git@github.com:updatecli/updatecli.git"
      branch: "main"
      user: "git user to push from changes"
      email: "git user email to push from change"
      commitMessage:
        type: "chore"
        scope: "(deps)"
      gpg:
        signingKey: | 
          -----BEGIN PGP PUBLIC KEY BLOCK-----
          mDMEYitSPBYJKwYBBAHaRw8BAQdAR3mMGagDsa1P2HziXehsurCBw5ak58aNnfPP
          uRQtcq60SlVwZGF0ZWNsaSBUZXN0aW5nIEtleSAoVXNlIGZvciB0ZXN0aW5nIGNv
          bW1pdCBzaWduaW5nKSA8aW5mb0B1cGRhdGVjbGkuaW8+iI8EExYKADcWIQSfbrE/
          jBl2/jyNP1zp/q0C4DwCsAUCYitSPAIbAwULCQgHAwQVCgkIBRYDAgEAAh4FAheA
          AAoJEOn+rQLgPAKwbFwBALgzusdciqTZVvzTT/MG9Rtba6FPUUR/3pZn0t5mYrT4
          AQDQjBipUNWOwQ6T7teBJuqZS2hFU6oMDv9cSzjNjrxQArg4BGIrUjwSCisGAQQB
          l1UBBQEBB0CAKp9rGdo2JojPTnq/I2ZqPx8YydCTPDKQzRGv54bSDgMBCAeIeAQY
          FgoAIBYhBJ9usT+MGXb+PI0/XOn+rQLgPAKwBQJiK1I8AhsMAAoJEOn+rQLgPAKw
          fH0A/2ZmCpmuGN4grG8UJwAbCHzrbTuWV456R2k6+MxKMiDmAQD5pOgx+Xs0PXyz
          rxOShppuh5wlhB0xMsx4iZJmRczPDQ==
          =FiJF
          -----END PGP PUBLIC KEY BLOCK-----
        passphrase: updatecli

sources:
  source-1:
    name: "Source 1"
    kind: file
    scmID: scenario-source
    spec:
      file: README.md

condition:
  condition-1:
    name: "Condition 1"
    kind: file
    scmID: scenario-condition
    spec:
      file: README.md

targets:
  target-1:
    name: "Target 1"
    kind: file
    scmID: scenario-target
    spec:
      file: README.md

Edit this page on GitHub