Sync Repos
v1
This method has all code pertaining to the area in one repository. This includes both the “frontend” and “backend” code. Changes made to the repository are synced directly to the Zendesk instance it is for. Due to the sensitive and potentially destructive nature of the “backend” code, this requires Support Readiness review for any and all changes.
How v1 works
NOTE This details how it works at the root level. Please see Change Management for more information on how this is actually deployed.
- The repository is scanned for YAML files, containing all needed aspects of the item
- The source (often Zendesk) is scanned for all items relating to the area
- These are compared to determine the creations and updates required for the source to align with the repository
- All creations and updates are made to the source
v2
Our newest method of managing sync repos, this focuses on enabling contributions from other teams in a safe, secure, and efficient way. Where applicable, these syncs utilize git submodules and CI/CD to separate the “backend” code managed by Support Readiness from the “frontend” code that others often want to contribute to.
In this manner, there exists a “Support Project” which contains the “frontend” code and a “Sync Project” that contains the “backend” code. This enables the sensitive and potentially destructive nature of the “backend” code to be maintained separately from the much safer “frontend” code. When using this method, Support Readiness review is not required for any changes to the “frontend” code.
How v2 works
NOTE This details how it works at the root level. Please see Change Management for more information on how this is actually deployed.
- The repository is scanned for YAML files, containing all needed aspects of the
item
- This uses metadata within the items to determine if the file contains content managed by another team
- In cases where this occurs, it checks the git submodule to locate the file which contains the managed content, putting it into place.
- The source (often Zendesk) is scanned for all items relating to the area
- These are compared to determine the creations and updates required for the source to align with the repository
- All creations and updates are made to the source
A more detailed explanation will be recorded and this section updated to point to it in the near future.
Adding an item to a v2 sync repo
Whenever an item needs to be added to a v2 sync repo, the following process should be used:
- Create a placeholder of the item in the system
- As an example, if you needed a new Zendesk Global trigger, go into Zendesk, create the trigger (using conditions that apply to no ticket and actions that will not make any real changes), set the item as inactive (deactivated), and copy the ID value.
- Determine if the item will contain managed content (text, webhook, email,
etc.).
- If so, navigate to the corresponding Support Project and create a merge request that will make the new file using the formatting and information from the project itself.
- Assign this merge request to the support managers group.
- Add a comment on the merge request linking back to the corresponding support-team-meta issue for the changes and explaining when the merge request needs to be merged by
- Create a merge request to add the new file in the Sync Project that aligns
with the needed values for the item
- If it is using managed content, remember to have the needed metadata values set to true
Deactivating an item in a v2 sync repo
To deactivate an item in a v2 sync repo, the following process should be used:
- Create a merge request in the Sync Project that moves the file for the item
in question to the inactive folder (in the corresponding file structure) and
sets the
active
value tofalse
. - Add a comment linking the merge request to the back to the corresponding support-team-meta issue.
NOTE If a corresponding file exists in the Support Project for the item, it should not be deleted or removed from said Support Project.
Completely removing an item in a v2 sync repo
NOTE This should not be required at any time other than routine maintenance of the repositories to remove items that have been inactive for more than 6 months,
To completely remove an item in a v2 sync repo (i.e. delete it), the following process should be used:
- Navigate to of the item in the system and delete it (see Zendesk Documentation for more information)
- Create a merge request in the Sync Project that deletes the file.
- Once that merge request is merged, determine if the file had contained managed content. If it did, make sure to create a merge request in the corresponding Support Project to delete the file. Make sure to assign this to the support managers group and add a comment linking to the merge request in step 2.
Make sure to follow these steps exactly, as going out of order can result in broken pipelines, deployments, etc.
Zendesk Global
Category | Type | Support Project | Sync Project |
---|---|---|---|
Account Settings | v2 | N/A | zendesk-global/account-settings |
Agents | v2 | N/A | zendesk-global/users/agents |
Apps | v2 | N/A | zendesk-global/apps |
Articles | v2 | N/A | zendesk-global/articles |
Automations | v2 | zendesk-global/automations | zendesk-global/automations |
Dynamic Content | v2 | N/A | zendesk-global/dynamic-content |
Groups | v2 | N/A | zendesk-global/groups |
Macros | v2 | zendesk-global/macros | zendesk-global/macros |
Organization Fields | v2 | N/A | zendesk-global/organizations/fields |
SLA Policies | v2 | N/A | zendesk-global/sla-policies |
Ticket Forms and Fields | v2 | N/A | zendesk-global/tickets/forms-and-fields |
Triggers | v2 | zendesk-global/triggers | zendesk-global/triggers |
User Fields | v2 | N/A | zendesk-global/users/fields |
User Roles | v2 | N/A | zendesk-global/users/roles |
Views | v2 | zendesk-global/views | zendesk-global/views |
ZD <> SFDC Sync | v2 | N/A | zendesk-global/zendesk-salesforce-sync |
Zendesk US Federal
Category | Type | Support Project | Sync Project |
---|---|---|---|
Account Settings | v2 | N/A | zendesk-us-government/account-settings |
Agents | v2 | N/A | zendesk-us-government/users/agents |
Apps | v2 | N/A | zendesk-us-government/apps |
Articles | v2 | N/A | zendesk-us-government/articles |
Automations | v2 | zendesk-us-government/automations | zendesk-us-government/automations |
Groups | v2 | N/A | zendesk-us-government/groups |
Macros | v2 | zendesk-us-government/macros | zendesk-us-government/macros |
Organization Fields | v2 | N/A | zendesk-us-government/organizations/fields |
SLA Policies | v2 | N/A | zendesk-us-government/sla-policies |
Ticket Forms and Fields | v2 | N/A | zendesk-us-government/tickets/forms-and-fields |
Triggers | v2 | zendesk-us-government/triggers | zendesk-us-government/triggers |
User Fields | v2 | N/A | zendesk-us-government/users/fields |
User Roles | v2 | N/A | zendesk-us-government/users/roles |
Views | v2 | zendesk-us-government/views | zendesk-us-government/views |
ZD <> SFDC Sync | v2 | N/A | zendesk-us-government/zendesk-salesforce-sync |
61def368
)