{"id":18342503,"url":"https://github.com/uniqueck/a4ad","last_synced_at":"2025-04-06T07:32:11.054Z","repository":{"id":52524214,"uuid":"196775072","full_name":"uniqueck/a4ad","owner":"uniqueck","description":"A4aD - ask for a Deployment","archived":true,"fork":false,"pushed_at":"2021-04-26T20:15:07.000Z","size":11814,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-15T13:36:34.460Z","etag":null,"topics":["architecture","decision-tables","hexagonal","junit5","lfet","liquibase","springboot","testcontainers","thymeleaf"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uniqueck.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-13T23:33:25.000Z","updated_at":"2024-03-15T21:15:12.000Z","dependencies_parsed_at":"2022-09-15T06:01:32.064Z","dependency_job_id":null,"html_url":"https://github.com/uniqueck/a4ad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uniqueck%2Fa4ad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uniqueck%2Fa4ad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uniqueck%2Fa4ad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uniqueck%2Fa4ad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uniqueck","download_url":"https://codeload.github.com/uniqueck/a4ad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247450338,"owners_count":20940901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture","decision-tables","hexagonal","junit5","lfet","liquibase","springboot","testcontainers","thymeleaf"],"created_at":"2024-11-05T20:31:13.315Z","updated_at":"2025-04-06T07:32:10.570Z","avatar_url":"https://github.com/uniqueck.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"== A4aD - Ask for a Deployment\nimage:https://circleci.com/gh/uniqueck/a4ad/tree/master.svg?style=shield[\"CircleCI\", link=\"https://circleci.com/gh/uniqueck/a4ad/tree/master\"]\nimage:https://sonarcloud.io/api/project_badges/measure?project=uniqueck_a4ad\u0026metric=sqale_rating[\"Maintainability Rating\", link=\"https://sonarcloud.io/component_measures?id=uniqueck_a4ad\u0026metric=Maintainability\"]\nimage:https://sonarcloud.io/api/project_badges/measure?project=uniqueck_a4ad\u0026metric=bugs[\"Bugs\", link=\"https://sonarcloud.io/component_measures?id=uniqueck_a4ad\u0026metric=bugs\"]\nimage:https://sonarcloud.io/api/project_badges/measure?project=uniqueck_a4ad\u0026metric=code_smells[\"Code Smells\", link=\"https://sonarcloud.io/component_measures?id=uniqueck_a4ad\u0026metric=code_smells\"]\nimage:https://sonarcloud.io/api/project_badges/measure?project=uniqueck_a4ad\u0026metric=coverage[\"Coverage\", link=\"https://sonarcloud.io/component_measures?id=uniqueck_a4ad\u0026metric=Coverage\"]\nimage:https://sonarcloud.io/api/project_badges/measure?project=uniqueck_a4ad\u0026metric=alert_status[\"Quality Gate\", link=\"https://sonarcloud.io/dashboard?id=uniqueck_a4ad\"]\n\n=== Hintergrund\n\nA4aD soll ein Beispielrepository sein, um Technologien zu verproben und eine mögliche Umsetzung der Hexagonale Architektur.\nDie Umsetzung der Hexagonalen Architektur basiert auf dem Buch https://leanpub.com/get-your-hands-dirty-on-clean-architecture[Get Your Hands Dirty On Clean Architecture] von https://github.com/thombergs[Tom Hombergs].\n\n=== Idee\n\nA4aD soll eine Anwendung werden, womit Deployments von Java Anwendungen auf SSH Containern durchgeführt werden können.\nHierfür soll der Anwender einzelne Shell Befehle zu einem Deployment Job hinterlegen können, welche in einer bestimmten Reihenfolge ausgeführt werden sollen. Der Deployment Prozess soll mittels Flowable als ein Buisness Process ausgeführt werden. Der Fortschritt soll visualisiert werden, so dass der Anwender über eine UI den Zustand des Deployments nachvollziehen kann.\nJedes Deployment soll protokollisiert werden und über ein Rechtkonzept abgesichert werden, so dass nur bestimmte Rollen ein Deployment in eine gewisse Umgebung beauftragen können. Über eine REST API soll eine Integration für CI Server geschaffen werden und gleichzeitig der Anreiz für alternative UI Implementierungen geschaffen werden. Eine eigene UI wird auf Basis des Frameworks Thymeleaf implementiert.\n \n=== genutzte Technologien\n\n* Spring Boot\n* Cucumber\n* Thymeleaf\n* TestContainers\n* JUnit 5\n* Asciidoc (arc42)\n* Liquibase\n* Selenium\n* Flowable\n\n=== Nützliche Links\n\n* https://github.com/callicoder/spring-boot-file-upload-download-rest-api-example[File Upload via REST API]\n* https://blog.codeleak.pl/2019/12/junit-5-and-selenium-improving-project.html[Selenium JUnit 5 Tests]\n* https://rieckpil.de/spring-boot-functional-tests-with-selenium-and-testcontainers/[TestContaners and Selenium]","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiqueck%2Fa4ad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funiqueck%2Fa4ad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiqueck%2Fa4ad/lists"}