GithubHelp home page GithubHelp logo

ykankaya / lambdacd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flosell/lambdacd

0.0 1.0 0.0 20.42 MB

a library to define a continuous delivery pipeline in code

Home Page: http://www.lambda.cd

License: Apache License 2.0

JavaScript 2.79% Clojure 93.85% Shell 1.82% HTML 0.09% CSS 1.44%

lambdacd's Introduction

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

lambdacd's People

Contributors

alphaone avatar felixb avatar flosell avatar immostanke avatar kennyjwilli avatar manuelpuetz0815 avatar matthiasn avatar michaelkunze avatar philwhln avatar redvox avatar splieth avatar tobiasbayer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.