Renaming of Resources
In general, changing the unique identifier (e.g. the name of a repo, url of a webhook) of a resource
in the configuration will result in the situation that the existing resource with the identifier will
get deleted and a new resource with the new identifier gets created. See an example of the output of
a plan
operation where the url
of a webhook has been changed:
- remove repo_webhook[url="https://www.example.org", repository="test-repo5"] {
- active = true
- content_type = "form"
- events = [
- "push"
- ],
- insecure_ssl = "0"
- url = "https://www.example.org"
- }
+ add repo_webhook[url="https://www.example.org/webhook", repository="test-repo5"] {
+ active = true
+ content_type = "form"
+ events = [
+ "push"
+ ],
+ insecure_ssl = "0"
+ url = "https://www.example.org/webhook"
+ }
In some cases, re-creation of a resource is not an idempotent operation (especially in the case of a Repository)
as some content of the resource would be lost in the process. Some resources support a list of aliases
, which
allows to specify previous identifiers of the same resource that will be used to associate current live resources
with entries in the configuration.
After the changes have been applied, the aliases
property can be safely remove as it is not needed anymore,
but it can be left for traceability to know what the previous identifiers or a resource have been.
Supported resources¶
Example usage¶
Taking the example from above, let's specify the previous identifier of the webhook in the aliases
property:
The result of the plan
operation for the Webhook would look like this now:
~ repo_webhook[url="https://www.example.org", repository="xxxxxxx"] {
~ url = "https://www.example.org" -> "https://www.example.org/webhook"
~ }
Analogously, the aliases
property can also be specified for a repository, e.g. to rename an existing
repository named oldreponame
to newreponame
:
orgs.newOrg('testorg') {
...
_repositories+:: [
...
orgs.newRepo('newreponame') {
aliases: ['oldreponame'],
allow_auto_merge: true,
allow_merge_commit: false,
allow_update_branch: false,
dependabot_alerts_enabled: false,
web_commit_signoff_required: false,
branch_protection_rules: [
orgs.newBranchProtectionRule('main'),
],
},
}