structurizr / cli

A command line utility for Structurizr.
https://docs.structurizr.com/cli
Apache License 2.0
485 stars 73 forks source link

Making this compatible with Github Actions + some custom actions #155

Closed sebastienfi closed 6 months ago

sebastienfi commented 6 months ago

Description

Hi @simonbrowndotje!

First off, I have to say – I'm genuinely impressed by your work! The C4 Architecture Model, the DSL, Structurizr... you've created some amazing tools that have been incredibly beneficial in my professional environment. I just wanted to start by saying a huge thanks for your commitment to developing solutions that truly makes life easier for us humans.

I've been actively promoting the use of the C4 model and Structurizr within my company. I've encouraged our engineering team to embrace the C4 model for documenting our software, coupled with the documentation-as-code approach (v2.0). While implementing Structurizr, however, I noticed a disconnect in integration that was causing some friction in our developer experience (DX). So, I dedicated the last day to bridging this gap, and I'm excited to share my insights with you and introduce a toolkit I developed to smooth out this process.

Observation

Our team has been using Structurizr, but we've run into a snag. Both our Product Managers and Engineers have found the diagrams visualisations challenging to generate, leading to documentation that quickly becomes outdated. This issue has led the team to seek workarounds, including reverting to static diagram tools, straying away from the documentation-as-code principle.

Solution

To tackle this issue head-on, I created a series of Github Actions. These actions automatically generate rendered images and attach them as comments in pull requests. The images get committed to the repository, allowing any accompanying documentation to reference these files easily. Developers can also manually compare diagrams, and I'm planning to enhance these actions to offer 'before/after' comparisons.

I did encounter some challenges with the structurizr/cli Docker image you provide. The Dockerfile's configuration seemed incompatible with Github Actions and lacked some tools needed for exporting images with PlantUML. Specifically, I noticed:

To turn these issues into a solution, I've published a new Docker image with the necessary adjustments. This image functions just like yours but includes PlantUML, is compatible with Github Actions, and is smaller in size. Could you take a look at the changes I've made and let me know if they align with your vision? Your input could help us collaborate to refine your existing Dockerfile, making these improvements available to a wider audience. Integrating these changes could render my Docker image unnecessary and bring enhanced resilience to everyone needing this integration (at the moment, I manually update the image when you publish a new release for the CLI). What are your thoughts on this?

The approach would be:

Resources:

Looking forward to your thoughts!

Steps to reproduce

  1. Create a Github workflow file referencing the Docker image structurirz/cli:latest, followed by a bash script to execute the export command. -> structurizr.sh not found

Screenshot

No response

Code sample

No response

Configuration

No response

Severity

Major

Priority

I'm willing to fix this myself and raise a PR (please confirm approach first)

More information

❤️

simonbrowndotje commented 6 months ago

Thanks for the kind words! Adding PlantUML to the Docker image defined in this repo will likely result in future issues being opened along the lines of, "we don't use PlantUML, can you add Mermaid support too?" ... and I'd rather avoid that.

So, from my perspective, my preference is to keep the CLI Docker image as simple as possible (I will modify theENTRYPOINT though), and allow people to build their own Docker images if needed ... that's the beauty of open source after all. I've added a link to your repo in the docs though ... thank you! 👍