{"id":17274505,"url":"https://github.com/idugalic/axon-sdm","last_synced_at":"2026-03-04T06:33:39.677Z","repository":{"id":40952092,"uuid":"161088356","full_name":"idugalic/axon-sdm","owner":"idugalic","description":"Software Delivery Machine for Axon projects","archived":false,"fork":false,"pushed_at":"2023-01-09T19:57:13.000Z","size":2509,"stargazers_count":2,"open_issues_count":18,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T08:57:55.692Z","etag":null,"topics":["atomist","axon","continuous-delivery","continuous-integration","software-delivery-machine","spring"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/idugalic.png","metadata":{"files":{"readme":"README.md","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":"2018-12-09T22:42:56.000Z","updated_at":"2019-07-16T15:56:03.000Z","dependencies_parsed_at":"2023-02-08T13:45:46.960Z","dependency_job_id":null,"html_url":"https://github.com/idugalic/axon-sdm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/idugalic/axon-sdm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idugalic%2Faxon-sdm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idugalic%2Faxon-sdm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idugalic%2Faxon-sdm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idugalic%2Faxon-sdm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idugalic","download_url":"https://codeload.github.com/idugalic/axon-sdm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idugalic%2Faxon-sdm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30074206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["atomist","axon","continuous-delivery","continuous-integration","software-delivery-machine","spring"],"created_at":"2024-10-15T08:54:05.471Z","updated_at":"2026-03-04T06:33:39.632Z","avatar_url":"https://github.com/idugalic.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Software Delivery Machine for Axon projects\n\nThe SDM framework enables you to control your delivery process in code. Think of it as an API for your software delivery. See this [introduction][atomist-doc] for more information on the concept of a Software Delivery Machine and how to create and develop on an SDM.\n\n[Axon][axon] is an end-to-end development and infrastructure platform for smoothly evolving Event-Driven microservices focused on CQRS and Event Sourcing.\n\nThis SDM is build on top of the [official Atomist Spring Boot SDM](https://github.com/atomist/sdm-pack-spring), it can:\n\n - run goals in respond to a commit.\n   - run your tests in the background\n   - deploy locally or in the cloud, and be sure that you’re doing manual testing on committed code\n   - apply autofixes directly in your repository\n   - check code inspections and tell you when you’ve violated them\n - execute commands\n   - [generate new Axon projects](#generators) from seeds\n   - [perform transforms](#code-transforms) on existing Axon project (repository), or on many repositories at once\n   - do inspections on one or many Axon projects (repositories)\n\n## Table of Contents\n- [Software Delivery Machine for Axon projects](#software-delivery-machine-for-axon-projects)\n  - [Table of Contents](#table-of-contents)\n  - [Getting Started - local mode](#getting-started---local-mode)\n    - [Clone this repo to:](#clone-this-repo-to)\n    - [Install the Atomist command-line utility](#install-the-atomist-command-line-utility)\n    - [Start your local SDM](#start-your-local-sdm)\n    - [See messages from SDM](#see-messages-from-sdm)\n    - [Using the SDM](#using-the-sdm)\n      - [Generators](#generators)\n        - [Create new Axon (java, maven, spring boot) project](#create-new-axon-java-maven-spring-boot-project)\n        - [Create new Axon (java, maven, spring boot) project with structure](#create-new-axon-java-maven-spring-boot-project-with-structure)\n        - [Create new Axon (kotlin, maven, spring boot) project](#create-new-axon-kotlin-maven-spring-boot-project)\n        - [Create new Axon (kotlin, maven, spring boot) project with structure](#create-new-axon-kotlin-maven-spring-boot-project-with-structure)\n      - [Code transforms](#code-transforms)\n        - [Set Axon version (maven)](#set-axon-version-maven)\n        - [Exclude Axon Server Connector (maven)](#exclude-axon-server-connector-maven)\n        - [Add Spring (Boot) AMQP dependencies (maven, spring boot)](#add-spring-boot-amqp-dependencies-maven-spring-boot)\n        - [Set desired Serializer (maven, spring boot)](#set-desired-serializer-maven-spring-boot)\n        - [Other code transforms](#other-code-transforms)\n  - [Getting Started - team mode](#getting-started---team-mode)\n  - [Deploying your SDM](#deploying-your-sdm)\n    - [Running in Docker](#running-in-docker)\n  - [Debugging an SDM](#debugging-an-sdm)\n\n## Getting Started - local mode\n\nWhen you run this SDM in local mode, it operates in the privacy of your laptop. \n\n### Clone this repo to:\n\n```\n~/atomist/projects/\u003cowner\u003e/axon-sdm\n```\nNote: `\u003cowner\u003e` is your Github owner, e.g: idugalic\n\n\n### Install the Atomist command-line utility\n\n```\n$ npm install -g @atomist/cli\n```\n\u003e Note:  Make sure that you have `node` and `npm` available.\n\n### Start your local SDM\n\nInstall the project dependencies using NPM, compile the TypeScript, and start your SDM in local mode:\n```\n$ cd ~/atomist/projects/\u003cowner\u003e/axon-sdm\n$ atomist start --local\n```\n\n### See messages from SDM\n\nIn order to see messages from events (not interspersed with logs), activate a message listener in another terminal:\n```\natomist feed\n```\n\n### Using the SDM\n\nList all `skills` (commands that you can use to transfrom your project) of the SDM:\n```\n$ atomist s\n```\n\n#### Generators\n\n##### Create new Axon (java, maven, spring boot) project\n```\n$ atomist create axon-java-spring\n```\nCreates new project under `~/atomist/projects/\u003cowner\u003e/` folder by using `https://github.com/idugalic/axon-java-spring-maven-seed` as a seed.\n\nNewly created project is an Axon application written in Java that uses [Axon Server][axon-server]\n\n - as an event store, and\n - to dispatch messages (commands, events and queries)\n\n##### Create new Axon (java, maven, spring boot) project with structure\n```\n$ atomist create axon-java-spring-with-structure\n```\nCreates new project under `~/atomist/projects/\u003cowner\u003e/` folder by using `https://github.com/idugalic/axon-java-spring-maven-seed/tree/with-structure` (branch `with-structure`) as a seed.\n\nNewly created project is an Axon application written in Java that uses [Axon Server][axon-server].\n\n - as an event store, and\n - to dispatch messages (commands, events and queries)\n\n\u003e Basic package structure is included (command, query, api, ...).\n\u003e Architecture test included. It checks if the classes in `command` and `query` packages are package private. This enables loose coupling and high cohesion.\n\n##### Create new Axon (kotlin, maven, spring boot) project\n```\n$ atomist create axon-kotlin-spring\n```\nCreates new project under `~/atomist/projects/\u003cowner\u003e/` folder by using `https://github.com/idugalic/axon-kotlin-spring-maven-seed` as a seed.\n\nNewly created project is an Axon application written in Kotlin that uses [Axon Server][axon-server]\n\n - as an event store, and\n - to dispatch messages (commands, events and queries)\n \n##### Create new Axon (kotlin, maven, spring boot) project with structure\n```\n$ atomist create axon-kotlin-spring-with-structure\n```\nCreates new project under `~/atomist/projects/\u003cowner\u003e/` folder by using `https://github.com/idugalic/axon-kotlin-spring-maven-seed/tree/with-structure` (branch `with-structure`) as a seed.\n\nNewly created project is an Axon application written in Kotlin that uses [Axon Server][axon-server]\n\n - as an event store, and\n - to dispatch messages (commands, events and queries)\n \n\u003e Basic package structure is included (command, query, api, ...).\n\u003e Architecture test included. It checks if the classes in `command` and `query` packages are acessible from this pages only. This enables loose coupling and high cohesion.\n\n#### Code transforms\n\n##### Set Axon version (maven)\n```\n$ atomist set axon-version\n```\nSets all maven Axon dependencies with the group (`org.axonframework`) to a new desired version.\n\nThe change will be introduced within specific branch `axon-upgrade-\u003cnew-version\u003e`.\n\n##### Exclude Axon Server Connector (maven)\n```\n$ atomist exclude axon-server-connector\n```\nExcludes transitive maven Axon dependency `axon-server-connector` from `axon-spring-boot-starter`.\n\nThe change will be introduced within specific branch `exclude-axon-server-connector`.\n\n##### Add Spring (Boot) AMQP dependencies (maven, spring boot)\n```\n$ atomist add amqp\n```\nAdds maven dependencies required for Spring Boot AMQP integration:  `axon-amqp-spring-boot-starter` and `spring-boot-starter-amqp`\n\nThe change will be introduced within specific branch `add-amqp-dependencies`.\n\n##### Set desired Serializer (maven, spring boot)\n```\n$ atomist set serializer\n```\nSets desired Serializer for Axon Spring Boot project. Possible values are `default`, `xstream`, `java`, and `jackson`\n\nThe change will be introduced within specific branch `set-serializer-\u003cdesired serializer\u003e`.\n\n\n##### Other code transforms\n\nThis SDM is built on top of the Spring SDM, so you can use other code transfroms that are available by Spring SDM:\n```\n$ atomist try to upgrade Spring Boot\n```\n```\n$ atomist add Maven dependency \n```\n```\n$ atomist add spring boot starter\n```\n```\n$ atomist add spring boot actuator\n```\n```\n$ atomist list branch deploys\n```\n\n## Getting Started - team mode\n\n[In team mode](https://docs.atomist.com/developer/team/), your SDM connects to the Atomist service.\n\n\n## Deploying your SDM\n\nYou can run Software Delivery Machines (SDMs) in many different environments, ranging from your laptop or data center to Platform-as-a-Service offerings like Heroku and Pivotal Cloud Foundry.\n\nAtomist also supports running SDMs as Docker containers. This allows you to operate them in Kubernetes clusters or Google Container Engine, for example.\n\nThis [document](https://docs.atomist.com/developer/sdm-deploy/) explains various ways to run SDMs.\n\n### Running in Docker\n\nWith the `Dockerfile` in place, you can start the Docker build:\n```\n$ npm run build \n$ docker build . -t idugalic/axon-sdm\n```\nRunning the Docker container locally:\n```\n$ docker run -d -e ATOMIST_CONFIG='{\"workspaceIds\": [\"YOUR_WORSPACE_IDs\"],\"apiKey\":\"YOUR_API_KEY\",\"sdm\": {\"cloudfoundry\": {\"api\": \"https://api.run.pivotal.io\",\"user\": \"idugalic@gmail.com\",\"password\": \"YOUR_PWS_PASSWORD\",\"org\": \"axoniq\",\"spaces\": {\"staging\": \"staging\",\"production\": \"production\"}}}}' --name my-axon-sdm idugalic/axon-sdm\n```\n\n\u003e In Docker, the SDM will only run in team mode.\n\u003e \n\u003e On the [web interface](https://app.atomist.com), you can find the Workspace ID on the settings page (click the gear), and your API Key by clicking on your username in the upper right.\n\n#### Cloud Foundry over docker\n\n```\n$ docker push idugalic/axon-sdm\n```\n\nYou can deploy docker image to cloudfoundry (make sure your [manifest.yml](manifest.yml) has correct API Key, workspace Ids, and PWS credentials):\n\n```\n$ cf push axon-sdm --docker-image idugalic/axon-sdm -m 1024M -k 2048M\n\n```\n## Debugging an SDM\n\nYou can debug your SDM on your laptop.\n\nInstead of `atomist start` at the command line, start it up in a debugger. In [VSCode](https://code.visualstudio.com/docs/editor/debugging), the debug configuration looks like:\n\n```\n{\n  \"type\": \"node\",\n  \"request\": \"launch\",\n  \"name\": \"Launch SDM\",\n  \"program\": \"${workspaceFolder}/node_modules/@atomist/automation-client/bin/start.js\",\n  \"env\": {\n      \"ATOMIST_MODE\": \"\"\n  },\n}\n```\nIf you want the SDM to run in local mode, put “local” in the ATOMIST_MODE environment variable (eg. `\"ATOMIST_MODE\": \"local\"`).\n\n---\n\n[axon-server]: https://download.axoniq.io/axonserver/AxonServer.zip\n[axon]: https://axoniq.io/\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidugalic%2Faxon-sdm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidugalic%2Faxon-sdm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidugalic%2Faxon-sdm/lists"}