structurizr / cli

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

Can I export to PUML from a DSL file while being offline? #146

Closed VAndreasKrauss closed 10 months ago

VAndreasKrauss commented 10 months ago

Question

Hey,

At first, thanks for developing on the C4model and its graphical visualization layer. I like the kind of abstractions and try to introduce them into our team.

Therefore, I want to use the structurizr CLI in a docker image for local development and within-CI processing. My plan was to export the JSON/DSL file in the CI pipeline to always have the most up to date graphs from the source. While this works quite good when developing a documentation locally, the Github CI container has no internet access and throws an HttpHostConnectException.

org.apache.hc.client5.http.HttpHostConnectException: Connect to [https://static.structurizr.com:443](https://static.structurizr.com/) [static.structurizr.com/172.67.223.154, static.structurizr.com/104.21.54.48] failed: Operation timed out
    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:554)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory.lambda$connectSocket$0(SSLConnectionSocketFactory.java:232)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:231)
    at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:181)
    at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:447)
    at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:162)
    at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:172)
    at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:142)
    at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
    at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
    at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
    at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
    at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
    at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
    at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
    at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:[11](https://github1.vg.vector.int/pnd/autosar-dsl/actions/runs/962121/job/3108345#step:4:12)5)
    at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
    at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
    at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:[12](https://github1.vg.vector.int/pnd/autosar-dsl/actions/runs/962121/job/3108345#step:4:13)3)
    at com.structurizr.view.ThemeUtils.loadThemes(ThemeUtils.java:74)
    at com.structurizr.cli.export.ExportCommand.run(ExportCommand.java:[14](https://github1.vg.vector.int/pnd/autosar-dsl/actions/runs/962121/job/3108345#step:4:15)1)
    at com.structurizr.cli.StructurizrCliApplication.run(StructurizrCliApplication.java:77)
    at com.structurizr.cli.StructurizrCliApplication.main(StructurizrCliApplication.java:112)

Is there a way to run structurizr export from a DSL or a JSON file without having internet access? Do I need to setup further services within the image to do that? E.g., a structurizr server?