Bootstrapping Infrastructure - Build
- Password Manager — All resource credentials are kept in a secure, shared repository, such as LastPass.
- Email Alerts — All systems are enabled for email alerts, and all email alerts go to a shared chat room, forum, email account, or distribution list. For a distribution list, to provide transparency, the alerts should also be available in a chat room or forum. (TBD)
- Version Control System — All source materials used to create and distribute products or customizations are kept under some form of version control with a history of changes.
- Post-Launch Subscriber Configuration — (sf) To provide longterm support, subscriber metadata is kept under version control, so that post-launch changes can be reviewed. (TBD)
- Issue Tracker — All new work and modifications are made according to a request logged to a common system that assigns a unique identity to each item, such as an issue tracker or agile project management tool.
- Traceability — All changes can be traced from the Issue Tracker to the Version Control System, or from version control (Bitbucket) to the change request (Jira issue) to the original requirement (in Confluence). (TBD)
- Collaborative Platform — Requirements and changes are specified using a collaborative environment, such as Confluence, which is integrated with development tools, such as the JIRA issue tracker and Git version control system. (TBD)
- Agile Methodology — Development work is managed using a well-defined Agile process, where progress on open items is visible on a shared Agile board, and the team continuously improves through blameless retrospectives. (TBD)
- Designated Workspace — Using a template, a separate Confluence workspace is created for each customer implementation or major release series (such as Winter, Spring, Summer, for Salesforce) in order to aggregate the resources generated for each release and to avoid creating a future maintenance burden. (TBD)
- BuildOps Maintenance — The infrastructure used by the build pipeline is regularly maintained according to a set schedule and checklist, including pruning abandoned task branches. (TBD)
- Resource Checklists — To ensure consistency and quality, checklists walk through the initial setup of recurring resources, such as managed packages, Trialforce orgs, workspaces, requirements, and internal scripting tools, as well as onboarding and offboarding resource users. (TBD)
- On-board/off-board — The access new employees require is defined by role, and work instructions include removing access from business resources and development resources when an employee leaves. (TBD)
- Shared Two-Factor Verification — For shared and standing development orgs, the verification text number is tied to a Google Voice number that posts to a chat room (such as HipChat or Slack), for shared access.
- Topic Branching — Within the Version Control System, topic branches are created from the default branch to represent individual change requests (Jira issues). The branches are short-lived and merged back into the default branch when the task is done. An alternative to Topic Branching ("Git Flow") is Trunk Based Development. (TBD)
- Resource Management — Key resources shared across packages or implementations (such as the ant-salesforce.jar or SFDX CLI) are maintained in a common managed location, and not in the individual source repositories. (TBD)
- Managed v Unmanaged — (sf) When to use an unmanaged or managed package is clearly defined by a decision tree or matrix. When to submit a package for security review is also supported by a decision tree. (TBD)
- Resource Naming Conventions — Common resources share a strong naming scheme, so that new resources with a similar scope are easy to locate, regardless of which team member creates the resource. This practice applies to version control repositories, named packages, shared usernames, development environments, and so forth. (TBD)
- Trunk Based Development — Within the Version Control System, new development is committed directly against the trunk, and checked in at least daily. An alternative to Trunk Based Development is Topic Branching. (TBD)
- Branching Model — A high performing development team selects a branching model that works well in their own environment. The two most popular models are Topic Branching and Trunk Based Development. Branching is a core practice. Each team member must understand the branching model being used, and should understand why the selected model is the best choice for their team. (TBD)
- Configuration Management System — All server operating systems and application software are setup and updated using automated configuration tools, such as Puppet, Chef, or AWS Cloud Formation. (TBD)
- Resource Runbook — Outline the lifecycle of each infrastructure resource, and any operational parameters, in a runbook or set of runbooks. (TBD)
- Equivalent Staging and Production Environments — To properly test ongoing changes to the work increment, we need a staging environment that matches the production environment as closely as possible.
- Continuous Integration Build Server — A build server integrates with other resources, such as the Version Control System, Configuration Management System, and other tools, in order to execute routine builds, launch automatic tests, and undertake other housekeeping tasks. (TBD)
- Deploy to Staging on Every Merge — On any change to the head of development, deploy the updated work increment to staging environment. (TBD)
Please submit feedback to the DreamOps Success Group http://dreamops.org/group.