The Atomist software delivery machine (SDM) for delivering internal Atomist services.
See the Atomist documentation for more information on what SDMs are and what they can do for you using the Atomist API for software.
Push Rules and Goals
See the Atomist Developer documentation for instructions on setting up your development environment. Briefly, you will need Git, Node.js, and the Atomist CLI installed and properly configured on your system. For this specific SDM, you will also need Java installed. With these installed, you can run this SDM in local mode.
To run this SDM for your team, you will need an Atomist workspace. See the Atomist Getting Started Guide for instructions on how to get an Atomist workspace and connect it to your source code repositories, continuous integration, chat platform, etc.
How we deliver
- supports the concept of some projects only configuring goals for certain workspaces (workspace white-listing)
- we skip most npm projects unless explicitly configured to add them
- "No material change" - we have specific rules for detecting no material change on clojure projects
- "Build a project with lein and npm parts" - we support setting goals across Leiningen and Npm when they're both present
- "Build a Clojure Service with Leiningen" - Leiningen and Docker on the master branch
- Leiningen and Docker not on the master branch skips kubernetes
- "Build a Clojure Library with Leiningen" - Leiningen libraries on the master branch automatically publish
- Leiningen libraries on other branches do not publish
- "Simple node based docker service" - Node.js services with docker containers automatically update k8 specs on master branch
- Non-master branch Node services do not update k8 specs
- LeinSupport - Goals for our leiningen projects
- fingerprintSupport - we use Fingerprints to manage shared traits like leiningen and npm dependencies
- goalScheduling, goalState, and githubGoalStatus are enabled
Events and Ingestors
- PodDeployments - we have a custom ingestion for new PodDeployments
- HandleRunningPods - we have a custom event handler for the above ingestion
- "kick service" - does nothing
- "make some noise" - generates some Pushes on Repos
- "testinate" - run platform integration tests
- "update spec" - update a k8 spec to rollback a change
- "enable deploy"
- "disable deploy"
- NodeDockerBuild - our assumptions for dockerizing simple Node.js builds
- neoApolloDockerBuild - some additional rules for
- deployToStaging - goal without approval
- deployToProd - goal with approval
- leiningen dependencies
- public defn bodies
See the Atomist Developer documentation for details on how to run this SDM. Briefly, once the prerequisites are met on your system you can start the SDM in local mode with the following command:
$ atomist start --local
The Atomist documentation for running SDMs has instructions for connecting and SDM to the Atomist API for software and running an SDM in various environments.
General support questions should be discussed in the
channel in the Atomist community Slack workspace.
If you find a problem, please create an issue.
You will need to install Node.js to build and test this project.
Build and test
$ npm install
build package script to compile, test, lint, and build the
$ npm run build
Releases are handled via the Atomist SDM. Just press the 'Approve' button in the Atomist dashboard or Slack.