• Stars
    star
    737
  • Rank 61,490 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 13 years ago
  • Updated over 2 years ago

Reviews

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

Repository Details

Incremental Git repository deployment.

Dandelion

Gem Version Test Status

Incremental Git repository deployment.

Install

Ensure that Ruby >= 2.0.0 is installed, then run:

$ gem install dandelion

You may need to install pkg-config and cmake before installing Dandelion. They're likely available in your OS package manager. For example:

$ brew install pkg-config cmake

or

$ apt-get install pkg-config cmake

You may also need to install the Ruby headers if you're using a version of Ruby installed by your OS package manager (ruby-dev on Debian, ruby-all-dev on Ubuntu).

Config

Configuration options are specified in a YAML file (by default, the root of your Git repository is searched for a file named dandelion.yml).

Example:

adapter: sftp
host: example.com
username: user
password: pass
path: path/to/deployment

exclude:
    - .gitignore
    - dandelion.yml
    - dir/

additional:
    - config/auth.yml

Required:

  • adapter (alias: scheme, the file transfer adapter)

Optional:

  • path (relative path from root of remote file tree, defaults to the root)
  • local_path (relative path from root of local repository, defaults to repository root)
  • exclude (list of files or directories to exclude from deployment, if local_path is set files are relative to that path)
  • additional (additional list of files from your working directory that will be deployed)
  • revision_file (remote file in which revision SHA is stored, defaults to .revision)

The additional section can either take a list of local file names or key-value formats if you want to upload something to a specific path:

additional:
    - localdir: remotedir
    - file.txt: remotedir/file.txt

The localdir in this example is relative to the repository root (ignoring local_path if you set it).

Each adapter also has additional required and optional configuration parameters (see below). Note that you can dynamically set configuration values by using environment variables. For example:

password: <%= ENV['DANDELION_PASSWORD'] %>

Adapters

There is support for multiple backend file transfer adapters. The configuration must specify one of these adapters and the set of additional parameters required by the given adapter.

SFTP: adapter: sftp (honors SSH config files)

Required:

  • host
  • username
  • password (not required if you're using an SSH key)

Optional:

  • port (defaults to 22)
  • preserve_permissions (defaults to true)

FTP: adapter: ftp

Required:

  • host
  • username
  • password

Optional:

  • port (defaults to 21)
  • passive (defaults to false)

FTPS: adapter: ftps

Required: (same as FTP)

  • host
  • username
  • password

Optional: (in addition to options for FTP)

  • port
  • passive
  • ftps_implicit (default false: explicit TLS)
  • insecure (default false, true to allow self-signed certificates)

Amazon S3: adapter: s3

Required:

  • access_key_id
  • secret_access_key
  • bucket_name
  • host (one of the endpoints listed here, defaults to s3.amazonaws.com)

Optional:

  • preserve_permissions (defaults to true)
  • cache_control (time to cache content in seconds, e.g. '1296000')
  • expires (time to cache content in seconds, e.g. '1296000')

Usage

From within your Git repository, run:

$ dandelion deploy

This will deploy the local HEAD revision to the location specified in the config file. Dandelion keeps track of the currently deployed revision so that only files which have been added/changed/deleted need to be transferred.

You can specify the revision you wish to deploy and Dandelion will determine which files need to be transferred:

$ dandelion deploy <revision>

For a more complete summary of usage options, run:

$ dandelion -h
Usage: dandelion [options] <command> [<args>]
    -v, --version                    Display the current version
    -h, --help                       Display this screen
        --repo=[REPO]                Use the given repository
        --config=[CONFIG]            Use the given configuration file

Available commands:
    deploy
    init
    status

Note that when specifying the repository or configuration file, the given paths are relative to the current working directory (not the repository root).

To see the options for a particular command, run dandelion <command> -h:

$ dandelion deploy -h
Usage: dandelion deploy [options] [<revision>]
        --dry-run                    Show what would have been deployed

More Repositories

1

backbone.io

Backbone.js sync via Socket.IO
540
star
2

data.io

Bidirectional data syncing via Socket.IO
JavaScript
387
star
3

mubsub

Pub/sub for Node.js and MongoDB
JavaScript
310
star
4

backbone.viewkit

Backbone view management and transitions
JavaScript
214
star
5

monq

MongoDB-backed job queue for Node.js
JavaScript
185
star
6

queued

Simple HTTP-based queue server
Go
132
star
7

syphon

Immutable architecture for React/Flux applications
JavaScript
76
star
8

mongoose-acl

Mongoose ACL
JavaScript
61
star
9

jot

A mobile web app for your plain text notes
Clojure
34
star
10

bms

Battery management system for 4-series li-ion packs
C
34
star
11

cell-monitor

Battery cell monitor and balancer
C++
29
star
12

tree.js

JavaScript library for creating and manipulating hierarchical tree structures.
JavaScript
24
star
13

redblack.js

Red-black tree for Node.js and the browser
JavaScript
19
star
14

avr-twi

Nonblocking TWI/I2C master driver for Atmel AVR
C
18
star
15

cmcm

Cooperative multitasking for ARM Cortex-M microcontrollers
C
11
star
16

nettle

On-the-fly processing framework for Node.js and MongoDB
JavaScript
10
star
17

manacle.js

Lightweight ACL for Node.js and the browser
JavaScript
9
star
18

ina219

INA219 current/power monitor driver for Rust
Rust
5
star
19

pagoda

Reusable function stacks for Node.js and the browser
JavaScript
5
star
20

mongoose-denormalize

Bidirectional denormalization for your Mongoose models
JavaScript
5
star
21

emt

Express/Mongoose Toolkit
JavaScript
4
star
22

pack-monitor

Battery pack monitor
C++
4
star
23

blobstore

Content addressable blob store
Rust
4
star
24

cnc-tools

CNC tools for working with Gcode and Grbl
Python
3
star
25

require-hbt

An AMD loader plugin for Handlebars templates
JavaScript
3
star
26

broadcastd

Simple HTTP-based pubsub server
Go
3
star
27

modbus.cr

Modbus client library for Crystal
Crystal
2
star
28

gpio-socket

GPIO control via WebSocket
Clojure
2
star
29

stm32l0

Minimal development environment for STM32L0 using libopencm3
C
2
star
30

normal

Normalize nested data according to a relationship schema
Clojure
2
star
31

celeriac

State management for ClojureScript applications
Clojure
2
star
32

scthing

SuperCollider control interface for embedded devices
Rust
2
star
33

weedb

A wee database for Node.js built with LevelDB
JavaScript
2
star
34

routemachine

Stateful client-side router
JavaScript
2
star
35

node-queued

Queued client for Node.js
JavaScript
2
star
36

daffy

A minimal Scheme interpreter written in Python.
Python
2
star
37

splitd

Splits newline-separated HTTP response body into multiple HTTP requests
Go
2
star
38

peerpipe

An auto-discoverable, encrypted network pipe for P2P data transfer
Rust
1
star
39

raisin

A Python library for storing, retrieving and indexing JSON objects in MySQL.
Python
1
star
40

queued-ruby

Queued client for Ruby
Ruby
1
star
41

kite

Another lightweight Python web framework.
Python
1
star
42

terrain

Opinionated toolkit for building CRUD APIs with Rails
Ruby
1
star
43

earle

A URL pattern parser for Django.
Python
1
star
44

pytest-trace

Save OpenTelemetry spans generated during testing
Python
1
star
45

cello

An append-only B+ tree with multiversion concurrency control.
Scala
1
star
46

decibel

Networked audio player services
JavaScript
1
star
47

emacs.d

My Emacs config
Emacs Lisp
1
star
48

rfm69-gateway

RFM69 Linux gateway
C
1
star
49

webaudio

Experiments with the Web Audio API
JavaScript
1
star
50

pgque

PostgreSQL job queue extension using advisory locks
PLpgSQL
1
star