Product and code repositories
Product managers and developers have different, but overlapping, areas of focus. GitHub at the VA provides two different kinds of repository workspaces to allow teams to work most efficiently.
Product repository
Home for a product’s docs & compliance. There should be just one of these for each product.
A product repository should have README.md that explains where this product fits in at VA: what product line it belongs to, who the product management team is, and what code repositories implement it.
Product repositories also contain version-controlled artifacts like these:
- Product documentation
- Compliance docs & checklists
- Issues for:
- Epics
- User stories
- Risks
Example product repository: https://github.com/department-of-veterans-affairs/demo-product
Code repository
These contain the source code that implements your product. A product many have many of these. Each one contains code and developer-facing artifacts for a single component (an API, say, or a web user interface).
- Source code
- CI/CD tests & scripts
- Releases
- Developer READMEs with information about the technology used, any special branches, build automation, and how to get started with development
- Issues for:
- Tasks
- Bugs
- Tests
Example code repository: https://github.com/department-of-veterans-affairs/reading-time-demo
Getting started
At VA, you can create private repositories as needed – for example when a new code component is called for, or to re-factor existing code. Here’s how:
- Create a new repository https://github.com/organizations/department-of-veterans-affairs/repositories/new
- Choose one of these templates from the Repository template dropdown
- Kick back while your repository is created, complete with the proper directory structure, issue templates and labels.
- Edit the README.md in your new repository to identify your team, and any related product or code repositories.
If you have questions about this, contact your configuration manager, or file an issue in configuration-management, where the team at @department-of-veterans-affairs/configuration-management can help.
Configuring a repository that already exists
To add the VA configurations to an existing repository, you’ll want to copy the .github folder from the template you need into your own repository.
That gives you the proper issue templates, and in the case of a code repository will set up the VA standard labels. (Although it will delete your existing labels — so you may need to re-label existing issues.)
Copy the .github folder from the appropriate repository template:
- Product documentation (1 per product): https://github.com/department-of-veterans-affairs/va-product-documentation-template
- Code (one for each component of your source code): https://github.com/department-of-veterans-affairs/va-code-project-template