flosell / Lambdacd
Licence: apache-2.0
a library to define a continuous delivery pipeline in code
Stars: ✭ 655
Programming Languages
clojure
4091 projects
Projects that are alternatives of or similar to Lambdacd
Lastbackend
System for containerized apps management. From build to scaling.
Stars: ✭ 1,536 (+134.5%)
Mutual labels: pipeline, ci, continuous-integration, continuous-delivery, cd
Cimonitor
Displays CI statuses on a dashboard and triggers fun modules representing the status!
Stars: ✭ 34 (-94.81%)
Mutual labels: hacktoberfest, pipeline, ci, continuous-integration, cd
Gitlab Ci Pipeline Php
☕️ Docker images for test PHP applications with Gitlab CI (or any other CI platform!)
Stars: ✭ 451 (-31.15%)
Mutual labels: hacktoberfest, ci, continuous-integration, continuous-delivery, cd
Pipelines
Build pipelines for automation, deployment, testing...
Stars: ✭ 105 (-83.97%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Abstruse
Abstruse is a free and open-source CI/CD platform that tests your models and code.
Stars: ✭ 704 (+7.48%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Orkestra
Functional DevOps with Scala and Kubernetes
Stars: ✭ 102 (-84.43%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Gocd
Main repository for GoCD - Continuous Delivery server
Stars: ✭ 6,314 (+863.97%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Rocket
Automated software delivery as fast and easy as possible 🚀
Stars: ✭ 217 (-66.87%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Flint
Fast and configurable filesystem (file and directory names) linter
Stars: ✭ 115 (-82.44%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
flagsmith-nodejs-client
Flagsmith Node JS Client. Flagsmith lets you manage features flags across web, mobile and server side applications. Get builds out faster. Control who has access to new features.
Stars: ✭ 13 (-98.02%)
Mutual labels: continuous-integration, continuous-delivery, ci, cd
Pypyr
pypyr task-runner cli & api for automation pipelines. Automate anything by combining commands, different scripts in different languages & applications into one pipeline process.
Stars: ✭ 173 (-73.59%)
Mutual labels: pipeline, tool, ci, cd
Concourse
Concourse is a container-based continuous thing-doer written in Go.
Stars: ✭ 6,070 (+826.72%)
Mutual labels: hacktoberfest, ci, continuous-integration, continuous-delivery
Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (-74.05%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
Rok8s Scripts
Opinionated scripts for managing application deployment lifecycle in Kubernetes
Stars: ✭ 248 (-62.14%)
Mutual labels: ci, continuous-integration, continuous-delivery, cd
www.go.cd
Github pages repo
Stars: ✭ 39 (-94.05%)
Mutual labels: continuous-integration, continuous-delivery, ci, cd
swarmci
Swarm CI - Docker Swarm-based CI system or enhancement to existing systems.
Stars: ✭ 48 (-92.67%)
Mutual labels: pipeline, continuous-integration, continuous-delivery, ci
generate-changelog
generates changelog from git based on jira tickets
Stars: ✭ 18 (-97.25%)
Mutual labels: continuous-integration, continuous-delivery, ci
Android-CICD
This repo demonstrates how to work on CI/CD for Mobile Apps 📱 using Github Actions 💊 + Firebase Distribution 🎉
Stars: ✭ 37 (-94.35%)
Mutual labels: continuous-integration, continuous-delivery, ci
Gaia
Build powerful pipelines in any programming language.
Stars: ✭ 4,534 (+592.21%)
Mutual labels: pipeline, continuous-integration, continuous-delivery
pipelines-as-code
Pipelines as Code
Stars: ✭ 37 (-94.35%)
Mutual labels: pipeline, continuous-delivery, ci
LambdaCD
- it's a continuous delivery pipeline, in code
- it's your own custom built Jenkins/Go/TeamCity/..., in clojure
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
Chat
-
#lambdacd
on the clojurians slack -
#lambdacd
on gitter
Resources
- Getting Started
- FAQ
- How to do ...
- Wiki Documentation
- Talk at ClojureD 2016 (Video)
- Detailed Tutorial: doc/walkthrough.md
- A complete LambdaCD infrastructure in code: https://github.com/flosell/devops-101-lambdacd
- Documented Sample-Code: example/clj/todopipeline
- Blog Post on LambdaCD at Otto including tutorial: http://dev.otto.de/2015/06/29/microservices-ci-with-lambdacd-microservices-and-continuous-integration-with-lambdacd-23/
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 intest/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 insrc/cljs
, tests intest/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
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].