diff --git a/src/pages/build-configs.mdx b/src/pages/build-configs.mdx new file mode 100644 index 00000000..fa212e5e --- /dev/null +++ b/src/pages/build-configs.mdx @@ -0,0 +1,67 @@ +--- +layout: ~/layouts/PageLayout.astro +title: 'Configuration files as a service' +--- + +import Button from "~/components/Button.astro"; + +export const products = [ + { + price: "2,500", + link: "https://buy.stripe.com/14kbJs98K1fc0p29AC", + buttonText: "Get started", + }, + { + price: "1,000", + link: "https://buy.stripe.com/7sIdRAbgS8HEfjWfZ1", + buttonText: "Sign up", + }, +]; + +All of my projects contain similar build configuration files, such as Docker and Docker Compose files, PHPUnit and PHPStan configuration, and CI/CD pipeline workflows. I used to maintain these manually which was time-intensive and there was no guarantee that the same features or options were available from project to project. + +“Build Configs” is a tool I’ve written to maintain a canonical set of templates and generate them for each project based on a per-project configuration file. + +This makes it quicker and easier for me to create or onboard new projects to work on and, as all of the base files are centralised, when I fix something or add a new feature, the changes can be pushed to every project that uses it. + +I’ve been using this on personal projects such as my [Docker Drupal](https://github.com/opdavies/docker-example-drupal) and [Docker LocalGov Drupal](https://github.com/opdavies/docker-example-drupal-localgov) example projects and for various client projects. + +## How does it work? + +- I create a `build.yaml` file for the project that contains its configuration - what version of PHP it needs, which web server to use, which paths to run automated tests from or static analysis on, etc. +- I run the `build-configs` tool which generates the required files, such as a Dockerfile, Docker Compose file, PHPStan and PHPUnit configuration files, and a justfile for automating project commands. +- The files are committed to version control and pushed to your code repository (GitHub, GitLab, Bitbucket, etc). +- As I add new features or make changes, I will re-run the process to re-generate the files and push any changes - ensuring you’re always up to date. + +## Options + +### Initial project setup - £{products[0].price} + +To get your project started on the right foot, I will create a new Drupal project skeleton for you using `build-configs` that is ready to work on, including all of the generated files. You can even edit them if you like as they will get no ongoing updates. + +