continuous integration with fabric

Post on 08-Jul-2015

317 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

An introduction to Continuous Integration with Fabric. Mainly used to deploy codes in server usually in one line.

TRANSCRIPT

Continuous IntegrationWith Fabric

http://docs.fabfile.org

Varun Batra @ Deft Infotech Pvt. Ltd.

I am Lazy!

I need one command to deploy codes.

>fab deploy

That’s what I was talking about

Varun Batra @ Deft Infotech Pvt. Ltd.

What if something goes wrong?

>fab deploy

This command should handle that as well and report me.

Varun Batra @ Deft Infotech Pvt. Ltd.

Common Principle of CI

• Code Repository (I use GIT)

• Fast & Auto Build

• Self Testing

• ‘Test Environment’ is not ‘Build Environment’

• Auto Deployment: merge to master/deploy branch (GIT), this should auto deploy it

• Self Sustainable System, e.g. if db is destroyed, it should automatically recreated by latest backup

Varun Batra @ Deft Infotech Pvt. Ltd.

My Deployment Principle

• Based on my experience

• Based on guys’s ‘better than me’ experience

• Let me know if you can improve because you can

Varun Batra @ Deft Infotech Pvt. Ltd.

Varun Batra @ Deft Infotech Pvt. Ltd.

Why Fabric?I learned it in half day

It can do what I need

Few seconds installation

Varun Batra @ Deft Infotech Pvt. Ltd.

GIT

>git branch something_cool

>git checkout something_cool

>git commit -a -m ‘what I did?’

>git checkout master

>git merge something_cool

>git push

git checkout -b something_cool combines first two commands

Varun Batra @ Deft Infotech Pvt. Ltd.

Fabric: library + command-line tool

Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

I copied from their website, I am lazy

Varun Batra @ Deft Infotech Pvt. Ltd.

Fabric Features

• Runs local and remote commands

• Runs normal or sudo commands

• Upload & Download files

• Prompt for input

• Simultaneous deploying in multiple server

• Output in different colors like red(text,bold=False)

Varun Batra @ Deft Infotech Pvt. Ltd.

Fabric combines

fabfile.py fab

Varun Batra @ Deft Infotech Pvt. Ltd.

There is a catch

each run or sudo call has its own distinct shell session.

run('cd foo' && 'mkdir bar')is notrun('cd foo')run('mkdir bar')

iswith('cd foo')

run('mkdir bar')

Varun Batra @ Deft Infotech Pvt. Ltd.

How discussed deployment process should be?

Varun Batra @ Deft Infotech Pvt. Ltd.

Processing Output

Output of ‘run’ command is stored in ‘url’ variable

Varun Batra @ Deft Infotech Pvt. Ltd.

Deploy with options?

• Passing parameters?• fab deploy:env=production

• fab deploy:production (in order of params)

• !Passing True is string i.e. ‘True’ not True

• Deploy to many hosts?• env.hosts = ['user@example1.com', ' user@example2.com ']

• fab –H user@example1.com, user@example2.com deploy

• Show fewer output?• with hide('output','running'), settings(warn_only=True):

Varun Batra @ Deft Infotech Pvt. Ltd.

@serial VS @parallel

Varun Batra @ Deft Infotech Pvt. Ltd.

More decorators?

• @hosts

• @roles

• @runs_once !caution with @parallel

• @task

• @with_settings

• @serial

• @parallel

Varun Batra @ Deft Infotech Pvt. Ltd.

Context Managers

Remember ‘with’?

with('cd ~/git_repo/'):

run('git pull')

#cd ~/git_repo/ && git pull

with hide('running', 'stdout', 'stderr'):

do_something()

Varun Batra @ Deft Infotech Pvt. Ltd.

Context Manager cont’d..

• cd

• with

• lcd

• path

• prefix

• settings

• show

Varun Batra @ Deft Infotech Pvt. Ltd.

Contributions

• File/directory management• comment/uncomment, sed, append, contains, exists, upload_template, first

• Project Tools• rsync_project, upload_project

• Django integration

Varun Batra @ Deft Infotech Pvt. Ltd.

Lets look at fabfile.py

Varun Batra @ Deft Infotech Pvt. Ltd.

But wait..What about auto-

deployment?cron VS service

Varun Batra @ Deft Infotech Pvt. Ltd.

fab prompt_for_any_questions

Varun Batra

IT Consultant

Deft Infotech Pvt. Ltd.

skype:varunb.deftinfotech

http://varunbatra.com

CodeVarun@gmail.com

https://www.linkedin.com/in/varunbatra/

https://www.facebook.com/VarunBatraIT

https://twitter.com/batravarun

fab stay_in_touch

Varun Batra @ Deft Infotech Pvt. Ltd.

top related