SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Scraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & SeleniumScraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & Selenium
Roger Barnes
 
Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13
Stephan Hochdörfer
 

La actualidad más candente (20)

Juliette Reinders Folmer - Promote your open source project with GitHub Pages...
Juliette Reinders Folmer - Promote your open source project with GitHub Pages...Juliette Reinders Folmer - Promote your open source project with GitHub Pages...
Juliette Reinders Folmer - Promote your open source project with GitHub Pages...
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Collaborative Development: The Only CD That Matters - Brent Beer - Codemotion...
Collaborative Development: The Only CD That Matters - Brent Beer - Codemotion...Collaborative Development: The Only CD That Matters - Brent Beer - Codemotion...
Collaborative Development: The Only CD That Matters - Brent Beer - Codemotion...
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for Beginners
 
When Web meet Native App
When Web meet Native AppWhen Web meet Native App
When Web meet Native App
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017
 
Scraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & SeleniumScraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & Selenium
 
Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13Phing for power users - dpc_uncon13
Phing for power users - dpc_uncon13
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with Phing
 
Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017
 
JSConf US 2010
JSConf US 2010JSConf US 2010
JSConf US 2010
 
Mobile Device APIs
Mobile Device APIsMobile Device APIs
Mobile Device APIs
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 
An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
 
Free django
Free djangoFree django
Free django
 
New EEA Plone Add-ons
New EEA Plone Add-onsNew EEA Plone Add-ons
New EEA Plone Add-ons
 

Destacado

Destacado (9)

Exploring Code with Pry!
Exploring Code with Pry!Exploring Code with Pry!
Exploring Code with Pry!
 
Introduction to buildout
Introduction to buildoutIntroduction to buildout
Introduction to buildout
 
Releasing and deploying python tools
Releasing and deploying python toolsReleasing and deploying python tools
Releasing and deploying python tools
 
Facebook 2010
Facebook 2010Facebook 2010
Facebook 2010
 
Using Python Packages - An Overview
Using Python Packages - An OverviewUsing Python Packages - An Overview
Using Python Packages - An Overview
 
Buildout future
Buildout futureBuildout future
Buildout future
 
Marek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with BuildoutMarek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with Buildout
 
Zen and the Art of Python
Zen and the Art of PythonZen and the Art of Python
Zen and the Art of Python
 
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
 

Similar a Buildout for the Future

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
ICS
 

Similar a Buildout for the 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
 
Exploring Five Lesser-Known Python Libraries
Exploring Five Lesser-Known Python LibrariesExploring Five Lesser-Known Python Libraries
Exploring Five Lesser-Known Python Libraries
 
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
 

Más de Clayton Parker

Más de Clayton Parker (15)

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
 
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
 
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
 
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
 
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
 
Getting Plone Ready For The Prom
Getting Plone Ready For The PromGetting Plone Ready For The Prom
Getting Plone Ready For The Prom
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Buildout for the 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