Skip to content
Architecture as code using Structurizr
Java Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.dependabot FIxing update_schedule for dependabot Dec 11, 2019
.github/workflows Fixing publish command Jan 13, 2020
documentation/products/arch-as-code Removed hardcoded workspace ids, instead relying on environment varia… Jan 10, 2020
gradle/wrapper Added Structurizr API integration example Dec 5, 2019
samples Removed hardcoded workspace ids, instead relying on environment varia… Jan 10, 2020
scripts Adding debug information for pushing code coverage Dec 12, 2019
src Changing the order in which commands are listed on help Jan 16, 2020
.gitattributes Initial commit Dec 5, 2019
.gitignore Sourcing credentials for structurizr from credentials file outside of… Dec 12, 2019
README.md Mentioning that Java needs to be installed in README.md Jan 16, 2020
build.gradle Bump jackson-dataformat-yaml from 2.10.1 to 2.10.2 (#60) Jan 15, 2020
gradlew Initial commit Dec 5, 2019
gradlew.bat Initial commit Dec 5, 2019
lombok.config
settings.gradle Refactoring code to increase testability Dec 11, 2019

README.md

Arch as code

Test Coverage Maintainability Dependabot Status Known Vulnerabilities

Arch as code project is to manage product architecture as code.

By following this approach we will be able to manage our architecture documents, models, decisions and diagrams in the same way we do code and gain all the tools and workflows supporting modern development. Think PR reviews, static code analysis, continuous integration & continuous deployment.

Specifically we are making use of the Structurizr tool by Simon Brown as the basis for structuring and storing our architecture models, decisions, views and documentation.

Getting Started

0. Create Structurizr Account

See Structurizr getting started guide on how to setup a new account and get a free workspace.

1. Install arch-as-code cli

Arch as code required java 8 or greater to be installed.

Mac OSX & Linux

mkdir -p ~/arch-as-code && curl -s https://api.github.com/repos/nahknarmi/arch-as-code/releases/latest | grep "browser_download_url" | cut -d : -f 2,3 | tr -d \" | xargs curl -L | tar --strip-components 1 -x -C ~/arch-as-code

export PATH=$PATH:~/arch-as-code/bin

arch-as-code --help

Windows

Download the latest binary here.

TBD

2. Configure Structurizr workspace details

Initialize arch-as-code using information available Structurizr workspace (available from dashboard):

mkdir -p <PATH_TO_STORE_ARCHITECTURE_DOCUMENTATION>

arch-as-code init -i <WORKSPACE_ID> -k <WORKSPACE_API_KEY> -s <WORKSPACE_API_SECRET> <PATH_TO_STORE_ARCHITECTURE_DOCUMENTATION>

3. Publish changes to Structurizr

arch-as-code publish <PATH_TO_STORE_ARCHITECTURE_DOCUMENTATION>

4. View your changes on Structurizr

Go to [https://structurizr.com/workspace/<YOUR_WORKSPACE_ID>] to view changes you've made.

Development

Build Pre-requisites

  • Java 1.8 or greater.
  • Create Structurizr credentials file under .arch-as-code/structurizr/credentials.json. You can find sample file under src/main/resources/sample_credentials.json and update with contents. You can find workspaces specific keys from https://structurizr.com/dashboard

Build

Builds and tests application code for publishing architecture data structure to Structurizr.

Tests operate against a "test" Structurizr workspace.

./gradlew build

Continuous Integration & Continuous Deployment

Continuous integration is currently being done using GitHub Actions (will change soon).

Continuous deployment (publishing documentation) is currently being done using GitHub Actions (will change soon).

GitHub Actions configuration is captured under .github/workflows/

Structurizr Notes

You can’t perform that action at this time.