SlideShare a Scribd company logo
1 of 30
Download to read offline
Clayton Parker, Senior Web Developer
Buildout for the Future
PLONE CONFERENCE 2010
Thursday, October 28, 2010
PLONE CONFERENCE 2010Who Am I?
• claytron
• Python dev since 2003
• Plone Core Committer
• Foundation Member
Thursday, October 28, 2010
PLONE CONFERENCE 2010What Will We
Learn?
• Pinning
• Indexes
• Buildout Tricks
Thursday, October 28, 2010
PLONE CONFERENCE 2010Problems with
Buildout
• PyPi
• Lost/deleted packages
• Version conflicts
Thursday, October 28, 2010
PLONE CONFERENCE 2010PinningVersions
• [versions]
• Local config
• Extended URLs
Thursday, October 28, 2010
PLONE CONFERENCE 2010Versions
[buildout]
# tell buildout to use the [versions] part
versions = versions
[versions]
my.package = 1.0
some.other.package = 2.0
Thursday, October 28, 2010
PLONE CONFERENCE 2010PloneVersions
[buildout]
extends = http://dist.plone.org/release/4.0.1/versions.cfg
Thursday, October 28, 2010
PLONE CONFERENCE 2010Plone versions.cfg
[buildout]
extends = http://download.zope.org/Zope2/index/2.12.11/versions.cfg
[versions]
# Buildout infrastructure
plone.recipe.zope2instance = 4.0.4
plone.recipe.zeoserver = 1.1.1
...
# External dependencies
Markdown = 2.0.3
PIL = 1.1.6
...
# Plone release
Plone= 4.0.1
...
Thursday, October 28, 2010
PLONE CONFERENCE 2010Zope versions.cfg
[buildout]
versions = versions
[versions]
Zope2 = 2.12.11
...
Thursday, October 28, 2010
PLONE CONFERENCE 2010Our versions.cfg
## buildout.cfg
[buildout]
extends =
http://dist.plone.org/release/4.0.1/versions.cfg
versions.cfg
## versions.cfg
[versions]
my.package = 1.0
some.other.package = 2.0
Thursday, October 28, 2010
PLONE CONFERENCE 2010GettingVersions
$ bin/buildout -v
...
Installing instance
We have the distribution that satisfies 'Plone==4.0.1'.
We have the distribution that satisfies 'plone.app.caching==1.0b1'.
We have the distribution that satisfies 'plone.app.ldap==1.2.3'.
We have the distribution that satisfies 'plone.reload==1.5'.
We have the distribution that satisfies 'zope.testrecorder==0.4'.
We have the distribution that satisfies 'Products.PDBDebugMode==1.1'.
We have the distribution that satisfies 'Products.PrintingMailHost==0.7'.
We have the distribution that satisfies 'Products.DocFinderTab==1.0.4'.
We have the distribution that satisfies 'Products.signalstack==1.0rc2'.
We have the distribution that satisfies 'Products.PTProfiler==1.4'.
We have the distribution that satisfies 'Products.DCWorkflowGraph==0.4'.
We have the distribution that satisfies 'ipdb==0.2'.
We have the distribution that satisfies
'plone.recipe.zope2instance==4.0.4'.
Getting required 'Zope2==2.12.11'
We have the distribution that satisfies 'Zope2==2.12.11'.
Thursday, October 28, 2010
PLONE CONFERENCE 2010Dump Picked
Versions
[buildout]
extensions = buildout.dumppickedversions
Thursday, October 28, 2010
PLONE CONFERENCE 2010Dump Picked
Versions
$ bin/buildout -v
...
*************** PICKED VERSIONS ****************
[versions]
PILwoTk = 1.1.6.4
Products.DCWorkflowGraph = 0.4
Products.DocFinderTab = 1.0.4
Products.PDBDebugMode = 1.1
Products.PTProfiler = 1.4
Products.PrintingMailHost = 0.7
Products.signalstack = 1.0rc2
ipdb = 0.2
plone.app.caching = 1.0b1
plone.app.ldap = 1.2.3
zope.testrecorder = 0.4
*************** /PICKED VERSIONS ***************
Thursday, October 28, 2010
PLONE CONFERENCE 2010Extended URLs
[buildout]
extends =
# Plone's set of version dependencies
http://dist.plone.org/release/4.0.1/versions.cfg
# specific versions for plone.app.caching package
http://good-py.appspot.com/release/plone.app.caching/1.0b1
# our version overrides and add-on packages
versions.cfg
Thursday, October 28, 2010
PLONE CONFERENCE 2010Public Indexes
• PyPi
• Mirrors
• Plone dist
• http://dist.plone.org/
• Company dist
• http://dist.company.com/public/
Thursday, October 28, 2010
PLONE CONFERENCE 2010Find Links
[buildout]
find-links = http://dist.plone.org/release/4.0.1/
[buildout]
plone-version = 4.0.1
extends = http://dist.plone.org/release/${:plone-version}/versions.cfg
find-links = http://dist.plone.org/release/${:plone-version}/
Thursday, October 28, 2010
PLONE CONFERENCE 2010Private Indexes
• Customer eggs
• Customer archives
• Not ready for pypi
• Branches / trunk
Thursday, October 28, 2010
PLONE CONFERENCE 2010Solutions
• Apache / nginx
• Plone Software Center
• basketweaver
• haufe.eggserver
• ClueReleaseManager
Thursday, October 28, 2010
PLONE CONFERENCE 2010Apache
• Use directory listings
• Basic auth for protection
• mod_ldap for integration
Thursday, October 28, 2010
PLONE CONFERENCE 2010Config
<Location /private/myproject>
AuthType Basic
AuthName "myproject"
# hook up to ldap or a password file
# ...
</Location>
Thursday, October 28, 2010
PLONE CONFERENCE 2010lovely.buildouthttp
• Access private egg repos
• Also tied into download recipes
myproject,https://dist.example.com/private/myproject,username,password
Thursday, October 28, 2010
PLONE CONFERENCE 2010Releasing Eggs
• jarn.mkrelease
• zest.releaser
Thursday, October 28, 2010
PLONE CONFERENCE 2010~/.pypirc
[distutils]
index-servers =
pypi
	 plone.org
[pypi]
username: username
password: password
[plone.org]
repository: http://plone.org/products
username: username
password: password
Thursday, October 28, 2010
PLONE CONFERENCE 2010~/.mkrelease
[defaults]
distbase =
distdefault = public
[aliases]
public = dist.company.com:/var/dist/public
myproject = dist.company.com:/var/dist/private/myproject
world =
public
pypi
plone-world =
world
plone.org
Thursday, October 28, 2010
PLONE CONFERENCE 2010mkrelease
$ mkrelease -d myproject
$ mkrelease -d public
$ mkrelease -d plone-world
Thursday, October 28, 2010
PLONE CONFERENCE 2010Buildout Profiles
• Debugging / local dev
• Production
Thursday, October 28, 2010
PLONE CONFERENCE 2010Profiles
my-buildout
"## buildout.cfg
"## parts
"## profiles
$   "## base.cfg
$   "## debug.cfg
$   "## local.cfg
$   "## prod.cfg
$   &## versions.cfg
&## var
Thursday, October 28, 2010
PLONE CONFERENCE 2010Annotate
• Check config
• Debug issues
• Verify settings
Thursday, October 28, 2010
PLONE CONFERENCE 2010Annotate
$ bin/buildout annotate
$ bin/buildout -c profiles/prod.cfg annotate
Thursday, October 28, 2010
Check out
sixfeetup.com/demos
Thursday, October 28, 2010

More Related Content

What's hot

Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)Pascal Rapicault
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tychojsievers
 
Report presentation
Report presentationReport presentation
Report presentationZul Mazlan
 
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...Jason Zaman
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Asher Martin
 
Yocto project and open embedded training
Yocto project and open embedded trainingYocto project and open embedded training
Yocto project and open embedded trainingH Ming
 
Basics of-foss-fedora-introduction
Basics of-foss-fedora-introductionBasics of-foss-fedora-introduction
Basics of-foss-fedora-introductionPravin Satpute
 
Tizen Web App 개발
Tizen Web App 개발Tizen Web App 개발
Tizen Web App 개발xcoda
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-davParin Sharma
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Projectrossburton
 
Kivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformKivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformSaurav Singhi
 
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber..."Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...eLiberatica
 

What's hot (14)

Fedora Introduction
Fedora IntroductionFedora Introduction
Fedora Introduction
 
Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)Discovery the p2 API (updated to Indigo)
Discovery the p2 API (updated to Indigo)
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tycho
 
Ubuntu Quick Guide
Ubuntu Quick GuideUbuntu Quick Guide
Ubuntu Quick Guide
 
Report presentation
Report presentationReport presentation
Report presentation
 
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...
TensorFlow & Deep Learning Singapore TFDevSummit 2019 - Open Source Community...
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
Yocto project and open embedded training
Yocto project and open embedded trainingYocto project and open embedded training
Yocto project and open embedded training
 
Basics of-foss-fedora-introduction
Basics of-foss-fedora-introductionBasics of-foss-fedora-introduction
Basics of-foss-fedora-introduction
 
Tizen Web App 개발
Tizen Web App 개발Tizen Web App 개발
Tizen Web App 개발
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-dav
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Kivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformKivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any Platform
 
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber..."Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...
"Understanding Open Source and Ubuntu Part 1 of 2" by Kurt von Finck @ eLiber...
 

Similar to Buildout future

Laying Pipe with Transmogrifier
Laying Pipe with TransmogrifierLaying Pipe with Transmogrifier
Laying Pipe with TransmogrifierClayton Parker
 
Managing Plone Projects with Perl and Subversion
Managing Plone Projects with Perl and SubversionManaging Plone Projects with Perl and Subversion
Managing Plone Projects with Perl and SubversionLuciano Rocha
 
New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4Quintagroup
 
E D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonE D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonAdam Englander
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneVincenzo Barone
 
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalk
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalkAuckland Docker Meetup (July 2015) - DockerCon2015 lightningtalk
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalkPeter Sellars
 
Openstack Contribution in a Nutshell
Openstack Contribution in a NutshellOpenstack Contribution in a Nutshell
Openstack Contribution in a NutshellMarton Kiss
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded FrameworkICS
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianMender.io
 
Plone 6 Theming from Scratch
Plone 6 Theming from ScratchPlone 6 Theming from Scratch
Plone 6 Theming from ScratchStefan Antonelli
 
Microsoft ♥ Open Source
Microsoft ♥ Open SourceMicrosoft ♥ Open Source
Microsoft ♥ Open SourceRicardo Peres
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStackdevkulkarni
 
An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018ICS
 
Introduce fuego
Introduce fuegoIntroduce fuego
Introduce fuegos60030
 
Advanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationAdvanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationSencha
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonCodeSyntax
 
VAST 8.0
VAST 8.0VAST 8.0
VAST 8.0ESUG
 
DevNet Associate : Python introduction
DevNet Associate : Python introductionDevNet Associate : Python introduction
DevNet Associate : Python introductionJoel W. King
 
Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...Giulio Vian
 

Similar to Buildout future (20)

Laying Pipe with Transmogrifier
Laying Pipe with TransmogrifierLaying Pipe with Transmogrifier
Laying Pipe with Transmogrifier
 
Managing Plone Projects with Perl and Subversion
Managing Plone Projects with Perl and SubversionManaging Plone Projects with Perl and Subversion
Managing Plone Projects with Perl and Subversion
 
New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4
 
E D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonE D - Environmental Dependencies in Python
E D - Environmental Dependencies in Python
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalk
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalkAuckland Docker Meetup (July 2015) - DockerCon2015 lightningtalk
Auckland Docker Meetup (July 2015) - DockerCon2015 lightningtalk
 
Openstack Contribution in a Nutshell
Openstack Contribution in a NutshellOpenstack Contribution in a Nutshell
Openstack Contribution in a Nutshell
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 
Plone 6 Theming from Scratch
Plone 6 Theming from ScratchPlone 6 Theming from Scratch
Plone 6 Theming from Scratch
 
Microsoft ♥ Open Source
Microsoft ♥ Open SourceMicrosoft ♥ Open Source
Microsoft ♥ Open Source
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStack
 
An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018An Introduction to the Yocto Embedded Framework 2018
An Introduction to the Yocto Embedded Framework 2018
 
Introduce fuego
Introduce fuegoIntroduce fuego
Introduce fuego
 
Advanced Data Widgets and Server Integration
Advanced Data Widgets and Server IntegrationAdvanced Data Widgets and Server Integration
Advanced Data Widgets and Server Integration
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in python
 
VAST 8.0
VAST 8.0VAST 8.0
VAST 8.0
 
Plone Einführung
Plone EinführungPlone Einführung
Plone Einführung
 
DevNet Associate : Python introduction
DevNet Associate : Python introductionDevNet Associate : Python introduction
DevNet Associate : Python introduction
 
Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...
 

More from Clayton Parker

Customizing Your Shell With Dotfiles
Customizing Your Shell With DotfilesCustomizing Your Shell With Dotfiles
Customizing Your Shell With DotfilesClayton Parker
 
Fuzzy Feelings for Fuzzy Matching
Fuzzy Feelings for Fuzzy MatchingFuzzy Feelings for Fuzzy Matching
Fuzzy Feelings for Fuzzy MatchingClayton Parker
 
Exploring Code with Pry!
Exploring Code with Pry!Exploring Code with Pry!
Exploring Code with Pry!Clayton Parker
 
Zen and the Art of Python
Zen and the Art of PythonZen and the Art of Python
Zen and the Art of PythonClayton Parker
 
So you think you can pdb?
So you think you can pdb?So you think you can pdb?
So you think you can pdb?Clayton Parker
 
Managing Chaos: Merging 120 Sites into a single Plone Multisite Solution
Managing Chaos: Merging 120 Sites into a single Plone Multisite SolutionManaging Chaos: Merging 120 Sites into a single Plone Multisite Solution
Managing Chaos: Merging 120 Sites into a single Plone Multisite SolutionClayton Parker
 
Current State of Python Packaging
Current State of Python PackagingCurrent State of Python Packaging
Current State of Python PackagingClayton Parker
 
Notre Dame Seamless Syndication with Lineage
Notre Dame Seamless Syndication with LineageNotre Dame Seamless Syndication with Lineage
Notre Dame Seamless Syndication with LineageClayton Parker
 
Pioneer a Strategic Change in Content Organization with Plone
Pioneer a Strategic Change in Content Organization with PlonePioneer a Strategic Change in Content Organization with Plone
Pioneer a Strategic Change in Content Organization with PloneClayton Parker
 
Using Buildout, GenericSetup and a Policy Package to Rule the World
Using Buildout, GenericSetup and a Policy Package to Rule the WorldUsing Buildout, GenericSetup and a Policy Package to Rule the World
Using Buildout, GenericSetup and a Policy Package to Rule the WorldClayton Parker
 
Make Plone Search Act Like Google Using Solr
Make Plone Search Act Like Google Using SolrMake Plone Search Act Like Google Using Solr
Make Plone Search Act Like Google Using SolrClayton Parker
 
Migrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifierMigrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifierClayton Parker
 
Buildout for the Future
Buildout for the FutureBuildout for the Future
Buildout for the FutureClayton Parker
 
LDAP and Active Directory Authentication in Plone
LDAP and Active Directory Authentication in PloneLDAP and Active Directory Authentication in Plone
LDAP and Active Directory Authentication in PloneClayton Parker
 
Code with Style - PyOhio
Code with Style - PyOhioCode with Style - PyOhio
Code with Style - PyOhioClayton Parker
 
Using Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsUsing Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsClayton Parker
 
Generic Setup De-Mystified
Generic Setup De-MystifiedGeneric Setup De-Mystified
Generic Setup De-MystifiedClayton Parker
 
Buildout: Fostering Repeatability
Buildout: Fostering RepeatabilityBuildout: Fostering Repeatability
Buildout: Fostering RepeatabilityClayton Parker
 

More from Clayton Parker (20)

Customizing Your Shell With Dotfiles
Customizing Your Shell With DotfilesCustomizing Your Shell With Dotfiles
Customizing Your Shell With Dotfiles
 
Vim for Mere Mortals
Vim for Mere MortalsVim for Mere Mortals
Vim for Mere Mortals
 
Fuzzy Feelings for Fuzzy Matching
Fuzzy Feelings for Fuzzy MatchingFuzzy Feelings for Fuzzy Matching
Fuzzy Feelings for Fuzzy Matching
 
Exploring Code with Pry!
Exploring Code with Pry!Exploring Code with Pry!
Exploring Code with Pry!
 
Zen and the Art of Python
Zen and the Art of PythonZen and the Art of Python
Zen and the Art of Python
 
So you think you can pdb?
So you think you can pdb?So you think you can pdb?
So you think you can pdb?
 
Managing Chaos: Merging 120 Sites into a single Plone Multisite Solution
Managing Chaos: Merging 120 Sites into a single Plone Multisite SolutionManaging Chaos: Merging 120 Sites into a single Plone Multisite Solution
Managing Chaos: Merging 120 Sites into a single Plone Multisite Solution
 
Current State of Python Packaging
Current State of Python PackagingCurrent State of Python Packaging
Current State of Python Packaging
 
Notre Dame Seamless Syndication with Lineage
Notre Dame Seamless Syndication with LineageNotre Dame Seamless Syndication with Lineage
Notre Dame Seamless Syndication with Lineage
 
Pioneer a Strategic Change in Content Organization with Plone
Pioneer a Strategic Change in Content Organization with PlonePioneer a Strategic Change in Content Organization with Plone
Pioneer a Strategic Change in Content Organization with Plone
 
Using Buildout, GenericSetup and a Policy Package to Rule the World
Using Buildout, GenericSetup and a Policy Package to Rule the WorldUsing Buildout, GenericSetup and a Policy Package to Rule the World
Using Buildout, GenericSetup and a Policy Package to Rule the World
 
Make Plone Search Act Like Google Using Solr
Make Plone Search Act Like Google Using SolrMake Plone Search Act Like Google Using Solr
Make Plone Search Act Like Google Using Solr
 
Migrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifierMigrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifier
 
Buildout for the Future
Buildout for the FutureBuildout for the Future
Buildout for the Future
 
LDAP and Active Directory Authentication in Plone
LDAP and Active Directory Authentication in PloneLDAP and Active Directory Authentication in Plone
LDAP and Active Directory Authentication in Plone
 
Code with Style - PyOhio
Code with Style - PyOhioCode with Style - PyOhio
Code with Style - PyOhio
 
Code with style
Code with styleCode with style
Code with style
 
Using Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python ProjectsUsing Buildout to Develop and Deploy Python Projects
Using Buildout to Develop and Deploy Python Projects
 
Generic Setup De-Mystified
Generic Setup De-MystifiedGeneric Setup De-Mystified
Generic Setup De-Mystified
 
Buildout: Fostering Repeatability
Buildout: Fostering RepeatabilityBuildout: Fostering Repeatability
Buildout: Fostering Repeatability
 

Buildout future

  • 1. Clayton Parker, Senior Web Developer Buildout for the Future PLONE CONFERENCE 2010 Thursday, October 28, 2010
  • 2. PLONE CONFERENCE 2010Who Am I? • claytron • Python dev since 2003 • Plone Core Committer • Foundation Member Thursday, October 28, 2010
  • 3. PLONE CONFERENCE 2010What Will We Learn? • Pinning • Indexes • Buildout Tricks Thursday, October 28, 2010
  • 4. PLONE CONFERENCE 2010Problems with Buildout • PyPi • Lost/deleted packages • Version conflicts Thursday, October 28, 2010
  • 5. PLONE CONFERENCE 2010PinningVersions • [versions] • Local config • Extended URLs Thursday, October 28, 2010
  • 6. PLONE CONFERENCE 2010Versions [buildout] # tell buildout to use the [versions] part versions = versions [versions] my.package = 1.0 some.other.package = 2.0 Thursday, October 28, 2010
  • 7. PLONE CONFERENCE 2010PloneVersions [buildout] extends = http://dist.plone.org/release/4.0.1/versions.cfg Thursday, October 28, 2010
  • 8. PLONE CONFERENCE 2010Plone versions.cfg [buildout] extends = http://download.zope.org/Zope2/index/2.12.11/versions.cfg [versions] # Buildout infrastructure plone.recipe.zope2instance = 4.0.4 plone.recipe.zeoserver = 1.1.1 ... # External dependencies Markdown = 2.0.3 PIL = 1.1.6 ... # Plone release Plone= 4.0.1 ... Thursday, October 28, 2010
  • 9. PLONE CONFERENCE 2010Zope versions.cfg [buildout] versions = versions [versions] Zope2 = 2.12.11 ... Thursday, October 28, 2010
  • 10. PLONE CONFERENCE 2010Our versions.cfg ## buildout.cfg [buildout] extends = http://dist.plone.org/release/4.0.1/versions.cfg versions.cfg ## versions.cfg [versions] my.package = 1.0 some.other.package = 2.0 Thursday, October 28, 2010
  • 11. PLONE CONFERENCE 2010GettingVersions $ bin/buildout -v ... Installing instance We have the distribution that satisfies 'Plone==4.0.1'. We have the distribution that satisfies 'plone.app.caching==1.0b1'. We have the distribution that satisfies 'plone.app.ldap==1.2.3'. We have the distribution that satisfies 'plone.reload==1.5'. We have the distribution that satisfies 'zope.testrecorder==0.4'. We have the distribution that satisfies 'Products.PDBDebugMode==1.1'. We have the distribution that satisfies 'Products.PrintingMailHost==0.7'. We have the distribution that satisfies 'Products.DocFinderTab==1.0.4'. We have the distribution that satisfies 'Products.signalstack==1.0rc2'. We have the distribution that satisfies 'Products.PTProfiler==1.4'. We have the distribution that satisfies 'Products.DCWorkflowGraph==0.4'. We have the distribution that satisfies 'ipdb==0.2'. We have the distribution that satisfies 'plone.recipe.zope2instance==4.0.4'. Getting required 'Zope2==2.12.11' We have the distribution that satisfies 'Zope2==2.12.11'. Thursday, October 28, 2010
  • 12. PLONE CONFERENCE 2010Dump Picked Versions [buildout] extensions = buildout.dumppickedversions Thursday, October 28, 2010
  • 13. PLONE CONFERENCE 2010Dump Picked Versions $ bin/buildout -v ... *************** PICKED VERSIONS **************** [versions] PILwoTk = 1.1.6.4 Products.DCWorkflowGraph = 0.4 Products.DocFinderTab = 1.0.4 Products.PDBDebugMode = 1.1 Products.PTProfiler = 1.4 Products.PrintingMailHost = 0.7 Products.signalstack = 1.0rc2 ipdb = 0.2 plone.app.caching = 1.0b1 plone.app.ldap = 1.2.3 zope.testrecorder = 0.4 *************** /PICKED VERSIONS *************** Thursday, October 28, 2010
  • 14. PLONE CONFERENCE 2010Extended URLs [buildout] extends = # Plone's set of version dependencies http://dist.plone.org/release/4.0.1/versions.cfg # specific versions for plone.app.caching package http://good-py.appspot.com/release/plone.app.caching/1.0b1 # our version overrides and add-on packages versions.cfg Thursday, October 28, 2010
  • 15. PLONE CONFERENCE 2010Public Indexes • PyPi • Mirrors • Plone dist • http://dist.plone.org/ • Company dist • http://dist.company.com/public/ Thursday, October 28, 2010
  • 16. PLONE CONFERENCE 2010Find Links [buildout] find-links = http://dist.plone.org/release/4.0.1/ [buildout] plone-version = 4.0.1 extends = http://dist.plone.org/release/${:plone-version}/versions.cfg find-links = http://dist.plone.org/release/${:plone-version}/ Thursday, October 28, 2010
  • 17. PLONE CONFERENCE 2010Private Indexes • Customer eggs • Customer archives • Not ready for pypi • Branches / trunk Thursday, October 28, 2010
  • 18. PLONE CONFERENCE 2010Solutions • Apache / nginx • Plone Software Center • basketweaver • haufe.eggserver • ClueReleaseManager Thursday, October 28, 2010
  • 19. PLONE CONFERENCE 2010Apache • Use directory listings • Basic auth for protection • mod_ldap for integration Thursday, October 28, 2010
  • 20. PLONE CONFERENCE 2010Config <Location /private/myproject> AuthType Basic AuthName "myproject" # hook up to ldap or a password file # ... </Location> Thursday, October 28, 2010
  • 21. PLONE CONFERENCE 2010lovely.buildouthttp • Access private egg repos • Also tied into download recipes myproject,https://dist.example.com/private/myproject,username,password Thursday, October 28, 2010
  • 22. PLONE CONFERENCE 2010Releasing Eggs • jarn.mkrelease • zest.releaser Thursday, October 28, 2010
  • 23. PLONE CONFERENCE 2010~/.pypirc [distutils] index-servers = pypi plone.org [pypi] username: username password: password [plone.org] repository: http://plone.org/products username: username password: password Thursday, October 28, 2010
  • 24. PLONE CONFERENCE 2010~/.mkrelease [defaults] distbase = distdefault = public [aliases] public = dist.company.com:/var/dist/public myproject = dist.company.com:/var/dist/private/myproject world = public pypi plone-world = world plone.org Thursday, October 28, 2010
  • 25. PLONE CONFERENCE 2010mkrelease $ mkrelease -d myproject $ mkrelease -d public $ mkrelease -d plone-world Thursday, October 28, 2010
  • 26. PLONE CONFERENCE 2010Buildout Profiles • Debugging / local dev • Production Thursday, October 28, 2010
  • 27. PLONE CONFERENCE 2010Profiles my-buildout "## buildout.cfg "## parts "## profiles $   "## base.cfg $   "## debug.cfg $   "## local.cfg $   "## prod.cfg $   &## versions.cfg &## var Thursday, October 28, 2010
  • 28. PLONE CONFERENCE 2010Annotate • Check config • Debug issues • Verify settings Thursday, October 28, 2010
  • 29. PLONE CONFERENCE 2010Annotate $ bin/buildout annotate $ bin/buildout -c profiles/prod.cfg annotate Thursday, October 28, 2010