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
| Name | Type | Description | Required |
|---|---|---|---|
| branch | string | “branch” defines the git branch to work on. | |
| commitmessage | object | “commitMessage” is used to generate the final commit message. | |
| body | string | body defines the commit body of the commit message as defined by the conventional commit specification. More information on -> https://www.conventionalcommits.org/en/ default: none | |
| deprecatedtitle | string | DeprecatedTitle is deprecated and will be ignored. The commit title is now always generated from the target name or description. | |
| footers | string | footers defines the footer of the commit message as defined by the conventional commit specification. More information on -> https://www.conventionalcommits.org/en/ default: none | |
| hidecredit | boolean | hideCredit defines if updatecli credits should be displayed inside commit message body please consider sponsoring the Updatecli project if you want to disable credits. -> https://github.com/updatecli/updatecli default: false | |
| scope | string | scope defines the scope of the commit message as defined by the conventional commit specification. More information on -> https://www.conventionalcommits.org/en/ default: none | |
| squash | boolean | squash defines if the commit should be squashed default: false important: if squash is set to true, then it’s highly recommended to set the commit body to a meaningful value as all other commit information will be lost during the squash operation. if body is not set, then the commit title/message will be generated based on the most recent commit message of the squashed commits. The commit title is always generated from the target name or description. | |
| title | string | Title is the parsed commit message title (not configurable via YAML). The title is automatically generated from the target name or description. | |
| type | string | type defines the type of commit message such as “chore”, “fix”, “feat”, etc. as defined by the conventional commit specification. More information on -> https://www.conventionalcommits.org/en/ default:
| |
| depth | integer | Depth defines the depth used when cloning the git repository. Default: disabled (full clone) Remark: When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history. This may cause some issues when Updatecli tries to push changes to the remote repository. In that case, you may need to set the force option to true to force push changes to the remote repository. | |
| directory | string | “directory” defines the local path where the git repository is cloned. | |
| string | “email” defines the email used to commit changes. | ||
| force | boolean | “force” is used during the git push phase to run default: false remark: When force is set to true, Updatecli also recreate the working branches that diverged from their base branch. | |
| gpg | object | “gpg” specifies the GPG key and passphrased used for commit signing | |
| passphrase | string | passphrase defines the gpg passphrase used to sign the commit message | |
| signingkey | string | signingKey defines the gpg key used to sign the commit message | |
| password | string | “password” specifies the password when using the HTTP protocol | |
| submodules | boolean | “submodules” defines if Updatecli should checkout submodules. compatible: * scm default: true | |
| url | string | “url” specifies the git url to work on. | |
| user | string | “user” specifies the user associated with new git commit messages created by Updatecli | |
| username | string | “username” specifies the username when using the HTTP protocol | |
| workingbranch | boolean | “workingBranch” defines if Updatecli should use a temporary branch to work on.
If set to compatible:
default: false | |
| workingbranchprefix | string | WorkingBranchPrefix defines the prefix used to create a working branch. compatible:
default: updatecli remark: A working branch is composed of three components:
If WorkingBranchPrefix is set to ‘’, then
the working branch will look like “ | |
| workingbranchseparator | string | WorkingBranchSeparator defines the separator used to create a working branch. compatible:
default: “_” |
GPG
Updatecli can sign commits using a private GPG key if configured accordingly.
| Name | Required | Default | Description |
|---|---|---|---|
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| Name | Required | Default | Description |
|---|---|---|---|
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
name: "Example with 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
conditions:
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