Let me provide an example of how our team utilizes this tool, which may offer some insight.
Within our infrastructure, we utilize a kubernetes platform housing multiple microservices developed and deployed independently by different teams. Despite the individual pace at which each team writes code, there is a shared need for standardized testing and deployment procedures across all microservices within the cluster.
We have implemented a projen construct to represent each 'microservice' project. Within this construct, we define GitHub Actions pipeline files that automate the build and deployment processes to various environments based on branch or designated stages (such as staging and production). Other essential GitHub resources such as PR templates and Issue templates are also included within these constructs. We maintain separate projen constructs for JavaScript-based projects, TypeScript projects, and Python projects, each tailored with language-specific configurations in addition to general GitHub settings.
In conjunction with the projen constructs, we incorporate Dockerfile constructs to outline the structure for building Docker images for the respective projects.
Any modifications to the pipeline logic are addressed centrally within the 'microservice' projen construct. After making updates, a new version is released, notifying all teams about the changes. Teams can then update their repos by running npx projen
to integrate the latest features, like the recent inclusion of PR title linting and label checking functionality.
Creating a new repository is simplified by initializing it using the --from argument, ensuring that developers can quickly begin their work with standardized project structures in place.
This framework streamlines project management and promotes consistency across development efforts within our organization.