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

NameTypeDescriptionRequired
branchstringBranch specifies the git branch
commitmessageobjectCommitMessage contains conventional commit metadata as type or scope, used to generate the final commit message.
    bodystringDefine commit body
    footersstringDefine commit footer
    hidecreditbooleanDisplay updatecli credits inside commit message body
    scopestringDefine commit type scope
    titlestringDefine commit title
    typestringDefine commit type, like chore, fix, etc
directorystringDirectory specifies the directory to use for cloning the repository
emailstringEmail specifies the git commit email
forcebooleanForce is used during the git push phase to run `git push --force`.
gpgobjectGPG key and passphrased used for commit signing
    passphrasestringDefine the gpg passphrase
    signingkeystringDefines the gpg key
passwordstringPassword specifies the password for http authentication
urlstringURL specifies the git url
userstringUser specifies the git commit author
usernamestringUsername specifies the username for http authentication

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
Top