• Stars
    star
    673
  • Rank 64,664 (Top 2 %)
  • Language
    Clojure
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a library to define a continuous delivery pipeline in code

LambdaCD

  • it's a continuous delivery pipeline, in code
  • it's your own custom built Jenkins/Go/TeamCity/..., in clojure

Status

Clojars Project

Build Status

Getting started

  • Make sure you have Leiningen and a recent version of JDK installed
  • lein new lambdacd <NAME> will create a new pipeline-project
  • cd <NAME>
  • lein run downloads all dependencies and starts the server; the UI is then served on on http://localhost:8080
  • your pipeline is defined in src/<NAME>/. Have a look around, change some steps or add some steps on your own
  • For more details, check out the resources and related projects below

Example

;; buildsteps
(def some-repo "[email protected]:flosell/somerepo")

(defn wait-for-repo [_ ctx]
  (git/wait-for-git ctx some-repo "master"))

(defn ^{:display-type :container} with-repo [& steps]
  (git/with-git some-repo steps))

(defn run-tests [{cwd :cwd} ctx]
  (shell/bash ctx cwd
    "lein test"))

(defn compile-and-deploy [{cwd :cwd} ctx]
  (shell/bash ctx cwd
    "./buildscripts/compile-and-deploy.sh"))

;; the pipeline
(def pipeline
  `(
     (either
       wait-for-manual-trigger
       wait-for-repo)
     (with-repo
       run-tests
       compile-and-deploy)))

Screenshot

Screenshot

Chat

Resources

Related projects

  • lambda-ui: Opinionated alternative user-interface with improved usability
  • lambdacd-git: Next generation of Git support for LambdaCD. Will replace the functionality in the core lambdacd.steps.git namespace in the future
  • lambdacd-cctray: Support for cctray.xml to integrate LambdaCD with build monitoring tools such as nevergreen or CCMenu
  • lambdacd-artifacts: Makes arbitrary build-artifacts (test-results, binaries, ...) available on LambdaCD
  • lambdacd-junit: Makes JUnit test reports available in LambdaCD
  • lambdacd-cron: A cron trigger for your LambdaCD
  • lambdacd-mongodb: Alternative persistence backend for LambdaCD, saving the pipeline state into MongoDB instead of the filesystem
  • machroput: LambdaCD-aware library simplifying deployments into a Mesos Cluster running Marathon or Chronos

Contribute

I'd love to hear from you! If you have a question, a bug report or feature request please reach out.

For details, refer to the contribution guide

Development

LambdaCD is built in Clojure and ClojureScript with Leiningen as a build-tool. The ./go script is your main entry-point that wraps all important development tasks. Call it without arguments to see all the options.

General Setup

  • Call ./go setup to install necessary dependencies and build everything once.

Core Development

  • Sources for the core of LambdaCD can be found in src/clj, tests in test/clj.
  • Run tests with ./go test-clj
  • To run a sample-pipeline (see example/clj), run ./go serve. You may have to run ./go serve-cljs occasionally to generate the frontend JS code from ClojureScript.
  • If you want the example pipeline to be green (which is not necessary for all development), you first need to setup a mock-deployment environment on your machine (two VMs where we deploy a TodoMVC client and server):
    • install Vagrant
    • have github-access set up (you need to be able to clone with ssh)
    • ./go setupTodopipelineEnv starts up two VMs in vagrant where we deploy to and exports the ssh-config for them so that it can be used by the deployment scripts

Frontend Development

  • The frontend is written in ClojureScript using Reagent and re-frame
  • Frontend resources can be found in resources/public, ClojureScript code in src/cljs, tests in test/cljs
  • Stylesheets are written in are in Less and can be found in src/less
  • ClojureScript code needs to be compiled into JS before being useful
  • In three terminals, run ./go serve to start an example pipeline (if you want it to be green, follow the environment setup above), ./go serve-cljs to start a ClojureScript REPL and automatic code-reloading using Figwheel and ./go serve-css to run the css autoprefixer watch
  • Run ./go test-cljs to run frontend-tests or ./go test-cljs-auto to start autotest

License

Copyright © 2014 Florian Sellmayr

Distributed under the Apache License 2.0

More Repositories

1

trailscraper

A command-line tool to get valuable information out of AWS CloudTrail
Python
756
star
2

iam-policy-json-to-terraform

Small tool to convert an IAM Policy in JSON format into a Terraform aws_iam_policy_document
Go
737
star
3

terraform-sqs-lambda-trigger-example

Example on how to create a AWS Lambda triggered by SQS in Terraform
HCL
48
star
4

diy-vpn

Create your own OpenVPN instance hosted on DigitalOcean or Rackspace
Ruby
21
star
5

lambdacd-git

Git support for LambdaCD
Clojure
18
star
6

iamspec

[WIP/PoC] RSpec Tests for AWS IAM using the AWS Policy Simulator - inspired by serverspec.
Ruby
17
star
7

pinboard-chrome-bookmark-sync

A Chrome extension to keep your bookmarks in sync between browser and pinboard.in - Bookmark Folders can be any combination of tags, not just one tag
JavaScript
11
star
8

lambdacd-artifacts

provides a way to access build artifacts generated by a step in LambdaCD
Clojure
5
star
9

lambdacd-value-stream

A library that adds upstream and downstream triggers to LambdaCD
Clojure
4
star
10

lambdacd-cctray

cctray support for lambdacd
Clojure
3
star
11

lambdacd-cookie-cutter-pipeline-example

example on how to use lambdacd to generate several instances of the same pipeline-template
Clojure
3
star
12

ultimate-go-script

This repository contains a template go-script for you to use in your project root to have a common entry-point for your project tooling.
Shell
2
star
13

gascripts-sync

[UNMAINTAINED] tool to synchronize Google App Scripts projects to the local machine to work on them from there
Ruby
2
star
14

lambdacd-demo-pipeline

Complete, deployable LambdaCD demo project with AWS infrastructure
Clojure
2
star
15

flosell.github.io

My blog
SCSS
1
star
16

lambdacd-pipeline-structure-refactoring-example

Example on how to refactor LambdaCD pipelines
Clojure
1
star
17

devops-101-lambdacd

continuous delivery infrastructure in pure code
Clojure
1
star
18

lambdacd-template

leiningen template to generate LambdaCD projects
Clojure
1
star
19

clj-timeframes

A small library to merge overlapping clj-time intervals
Clojure
1
star