Nearly every repository contains a singular functionally concise component/product to be plugged into a "Host" or "Application" to enhance or alter its core functionality.
├───docs
├───lib
├───out
├───src
│ └───[Product/Component]
├───test
│ └───[Product/Component] - Test.Unit
├───util
├───.gitignore
├───.gitlab-ci.yml
└───psakefile.ps1
- Purpose:
- contains documentation for the Product/Component developed within the repository
- VCS:
- files directly linked to the documentation of the component/product should be included
- files tied to the user/developer and their configured environment should be excluded
- Notes:
- files saved/committed within this folder should be updated to reflect changes within the src directory as needed to ensure documentation kept up to date
- files saved/committed within this folder should NEVER change when a "build" is performed
- Purpose:
- contains packages to be referenced within the codebase that are needed to provide functionality within the codebase, development process, or automation of the product
- VCS:
- transient folder that may not exist within the committed code and will only be visible once built within the IDE or via the automated CICD process
- ignored by the VCS by default unless absolutely necessary.
- Build:
- IDE: building from the IDE should be able to populate the folder with any and all packages that are missing or out of date to ensure the developer's ability to quickly and repeatedly build
- CICD: building from an automated process should purge and repopulate this directory and its packages in order to facilitate/proof a raw build and to ensure that remnants from previous versions/builds to not hinder the process.
- Notes:
- some IDEs, when opened and while trying to perform the external CICD based build process, may retain handles to files within this directory so you may have to close the IDE to ensure a successful build.
- deletion of this folder should in no way hinder the "build" process whether or not it is performed within an IDE or a CICD process
- Purpose:
- contains the end results of the build via the CICD process
- anything within this folder should be identifiable by uniform value so that all resources from any particular build are linked directly
- will be archived by the CICD process and any centrally accessible developer service (i.e. VCS, PKG, DOC, SCM, etc)
- VCS:
- transient folder that may not exist within the committed code and will only be visible once built within the IDE or via the automated CICD process
- ignored by the VCS by default unless absolutely necessary.
- Build:
- CICD: building from an automated process should be able to populate the folder with any and all consumable resources that are produced by the CICD process
- Notes:
- any stage of the CICD process may fail and the expected output/resources may not be complete
- Purpose:
- contains files that can be compiled/aggregated/packaged to create the component/product held within the repository
- VCS:
- files directly linked to the component/product should be included
- files tied to the user/developer and their configured environment should be excluded
- Notes:
- files saved/committed within this folder is where 99% of the changes will occur
- files saved/committed within this folder should NEVER change when a "build" is performed
- Purpose:
- contains files to be utilized in the build and packaging process of the product/component within the repository
- VCS:
- commit any/all files needed to perform tasks for this repository
- Build:
- build within an IDE or an automated process should not modify the contents of this folder
- Notes:
- Purpose:
- contains a list of files or patterns for file names to be ignored by the GIT VCS.
- any file or folder that is generated by the IDE during build, or a CICD process should be listed so that VCS doesn't keep track of them needlessly
- any file that is user specific and generated for tooling, like IDE caches, should be listed so that they don't interfere with another developer's environment
- VCS:
- should be one of the very first files added to the repository
- Build:
- any files listed within this file to be ignored should never hinder the build process via an IDE or the CICD process
- Notes:
- Purpose:
- defines step(s) for Gitlab's CICD pipeline to perform
- VCS:
- committed and stored in the root of the repository as that is the path Gitlab's CICD pipeline will search
- Build:
- required for Gitlab's CICD pipeline processing
- Notes:
- Purpose:
- defines tasks for building the product/component
- VCS:
- committed and stored in the root of the repository
- Build:
- Notes: