SlideShare a Scribd company logo
Jenkins + CVMFS :
Distributed Development,
Centralised Delivery
Bruce Becker | bbecker@csir.co.za
Coordinator: SAGrid
SANREN, Meraka Institute, CSIR
Stefanus Riekert | RiekertSJPK@ufs.ac.za
HPC Application Engineer
University of the Free State
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Outline
● What users want
● SAGrid VO – a catch-all VO with many applications
● Problem statements:
● Problem 1: ”the usual problem” – maintaining
applications in a distributed computing environment
● Problem 2: ”Another usual problem” - maintaining a
complex application inventory
● General solution : CVMFS + Jenkins
● Some specifics of SAGrid CI platform
● Outlook
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
SAGrid as a catch-all VO
● The South African National Grid operates a
catch-all VO which all South African researchers
can use to access computing and data
resources.
● SAGrid VO is not a domain-specific VO, so
● several widely-varying uses for the applications
supported by this VO
● Applications requested by users or communities
themselves
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
What users want
Amazing infrastructure
Some users want highly
varied, modular
application selection
Vertically integrated
Highly specialised
applications
Highly trained supportHighly trained support
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
What users get sometimes
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
The problem (1) -
”the usual problem”
● Software distribution was done mostly by hand”:
● Someone from the ops team develops script to install the application
● Apps installed via job submission
● Tags applied via script or by the job itself
● Issues:
● Major overhead of work
● Inconsistent installation procedures between applications and sites
● Bottleneck in porting applications (has to be done by someone in the
VO)
● Duplication of effort, especially in dependencies of applications
● Difficult to manage application lifecycles
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
The problem (2) -
what about the community ?
● Managing the inventory in a catch-all VO can be complex
when there are many applications
● Prioritising porting requests depends on the knowledge
of the export porting the application
●
Can lead to major delays in porting and deploying applications
● However, a user or community usually has an expert who
knows how to tune, port and configure the application
properly, as well as dependencies
●
Usually, ”they” have to conform to ”us” - learn grid tools and
terminology, etc
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Problem (3) :
Changes to the playing field
● New middleware stacks
● New architectures – GPGPU, ARM
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Questions to answer
● How do we lower the barrier to entry to the grid or
cloud infrastructure ?
● How can the application expert prove to the resource
provider that the application will actually run on the
execution environment of the site ?
● How can we manage the lifecycle of applications
across multiple versions, architectures, configurations ?
● How can we ensure that once applications are
”certified”, they are actually available on as many sites
as possible ?
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
General Solution:
Jenkins + CVMFS
● The issues outlined are ”typical” in a large
software project
● Usually solved by judicious use of Continuous
Integration system
● Once applications have been ”ported”, put them
into a trusted repository
● Previously – built RPMs, but required site-
admin intervention
● One-time configuration with CVMFS
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
First, some changes
● Distribute the effort, centralise the tools
● Move repository from ”closed” SVN repo
– https://ops.sagrid.ac.za/trac/svn/repo
● to git
– https://github.com/SAGridOps/SoftwareInstallation
● Don't have to give write access to a single repo, instead
accept pull requests
● Take advantage of all the Github infrastructure
● Expand possible contributors to those ”outside” the
infrastructure
● Recognise individuals' contribution
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Recognise individuals...
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Decentralise the team
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Collaborate with code
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Let the robots do the work
● Define what we want to deploy – let the experts
take care of how to deploy
● DevOps paradigm – same review/tag/release
mechanisms on operations code as we have for
scientific applications
● Teach a marketable skill
● Allow specialisation
● Enable remote management of complex services
● Ensure that published methodology is adopted
methodology
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Quality Control and feedback
● Ensure that
requested
applications are
included in the repo
● Provide testing and
QA infrastructure
● Self-serve to users
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
The CI environment
● Jenkins is extremely flexible... can do almost anything
● AuthN/AuthZ
● Currently using Github Oauth
● Take advantage of future Identity Federation
● We wanted to simulate different execution
environments
● Already in production
● Planned for future
● Track and re-use depedendencies
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Matrix-based builds
● Independent different builds and build statuses for
different configurations:
● Application name
● Version
● OS
● Architecture
● … can add specific tuning configurations...
● We can see exactly what's broken where – build
more resilient integration code.
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Typical workflow
Testingmatrix
Defines relevant
tests in Jenkins
Writes code to
pass required tests
Dev/Stage env.Application
developer
Infrastructure
expert
Reads description
of execution environment tests
Promote a build
to CVMFS
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Dependency management
simple case
● Common problem with applications :
need a specific version of a
compiler
● Compiling the compiler can itself be
tricky...
● Jenkins tests the full dependency
chain necessary
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Real-world application
● GADGET –
astrophysics
hydrodynamic
simulations
● Many (levels of)
dependencies
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Public Application Dashboard
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Authenticated view
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Generic build script
# GADGET requires HDF5 FFTW2 ZLIB and 
openmpi
module add ci
module add fftw/2.1.5
module add hdf5
module add openmpi
module add gsl
# GADGET requires HDF5 FFTW2 ZLIB and 
openmpi
module add ci
module add fftw/2.1.5
module add hdf5
module add openmpi
module add gsl
rm ­rf $FFTW_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/fftw/$FFTW_VERSION/build.tar.gz ­C /
rm ­rf $HDF5_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/hdf5/$HDF5_VERSION/build.tar.gz ­C /
rm ­rf $OPENMPI_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/openmpi/$OPENMPI_VERSION/build.tar.gz ­C /
rm ­rf $GSL_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/gsl/$GSL_VERSION/build.tar.gz ­C /
rm ­rf $FFTW_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/fftw/$FFTW_VERSION/build.tar.gz ­C /
rm ­rf $HDF5_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/hdf5/$HDF5_VERSION/build.tar.gz ­C /
rm ­rf $OPENMPI_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/openmpi/$OPENMPI_VERSION/build.tar.gz ­C /
rm ­rf $GSL_DIR
tar xvfz /repo/$SITE/$OS/$ARCH/gsl/$GSL_VERSION/build.tar.gz ­C /
Set up the
environment
Clean build, retrieve
dependency artifacts
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
Generic build script
make install DESTDIR=$WORKSPACE/build
mkdir ­p $REPO_DIR
rm ­rf $REPO_DIR/*
tar ­cvzf $REPO_DIR/build.tar.gz ­C 
$WORKSPACE/build apprepo
make install DESTDIR=$WORKSPACE/build
mkdir ­p $REPO_DIR
rm ­rf $REPO_DIR/*
tar ­cvzf $REPO_DIR/build.tar.gz ­C 
$WORKSPACE/build apprepo
Actually build...
Create the artifact
cat <<MODULE_FILE
#%Module1.0
## $NAME modulefile
##
proc ModulesHelp { } {
    puts stderr "       This module does nothing but alert the user"
    puts stderr "       that the [module­info name] module is not available"
}
preqreq("gsl","fftw/2.1.5","hdf5")
module­whatis   "$NAME $VERSION."
setenv       GSL_VERSION       $VERSION
setenv       GSL_DIR           /apprepo/$::env(SITE)/$::env(OS)/$::env(ARCH)/$NAME/$VERSION
prepend­path LD_LIBRARY_PATH   $::env(GSL_DIR)/lib
MODULE_FILE
) > modules/$VERSION
cat <<MODULE_FILE
#%Module1.0
## $NAME modulefile
##
proc ModulesHelp { } {
    puts stderr "       This module does nothing but alert the user"
    puts stderr "       that the [module­info name] module is not available"
}
preqreq("gsl","fftw/2.1.5","hdf5")
module­whatis   "$NAME $VERSION."
setenv       GSL_VERSION       $VERSION
setenv       GSL_DIR           /apprepo/$::env(SITE)/$::env(OS)/$::env(ARCH)/$NAME/$VERSION
prepend­path LD_LIBRARY_PATH   $::env(GSL_DIR)/lib
MODULE_FILE
) > modules/$VERSION
Create the modulefile
Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za
So, it works ! … almost
Next steps
● We have an open, collaborative, low-barrier platform for researchers
to bring applications to the grid
● Small technical tasks :
● Implement promoted builds mechanism to populate sagrid.ac.za CVMFS repo
● Implement SAML AuthN, integrate IdF
● Probes to check that CVMFS is mounted on sites (?)
● Operating in ”stealth mode” at the moment – not advertising, but open
to anyone who is interested to collect feedback
● Addressing specific user communities to test drive the system:
● Machine learning astro applications (rapid prototyping)
● Bioinformatics application suites (complex ecosystem)
● Present next phase of the project in November in Cape Town – move
to production

More Related Content

PDF
Full Steam Ahead, R2DBC!
PDF
You Want to Kubernetes? You MUST Know Containers!
PDF
Enabling Cloud Native Buildpacks for Windows Containers
PDF
KUDO - Kubernetes Operators, the easy way
PDF
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
PDF
Belarus Jenkins Meetup - Managing security in Jenkins with configuration-as-c...
PDF
Migrating from Grails 2 to Grails 3
PDF
What’s new in grails framework 5?
Full Steam Ahead, R2DBC!
You Want to Kubernetes? You MUST Know Containers!
Enabling Cloud Native Buildpacks for Windows Containers
KUDO - Kubernetes Operators, the easy way
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Belarus Jenkins Meetup - Managing security in Jenkins with configuration-as-c...
Migrating from Grails 2 to Grails 3
What’s new in grails framework 5?

What's hot (20)

PDF
Go for Operations
PDF
Docker Dhahran Nov 2016 meetup
PPTX
Gradle.Enemy at the gates
PDF
給 RD 的 Kubernetes 初體驗 (gcpug 2019-06 version)
PPTX
Thinking about Jenkins Security
PPTX
Mini-training: Let’s Git It!
PDF
Aws ug dxb 2021 container series iv
PPTX
Modern Tools for Building Progressive Web Apps
PDF
Crossing the Streams! Rollout Strategies to Keep Your Users Happy!
PDF
Flux is incubating + the road ahead
PDF
Clean Infrastructure as Code
PDF
Configuration as Code in Jenkins. What's new? Nov 2016
PDF
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
PDF
Использование AzureDevOps при разработке микросервисных приложений
PDF
E bpf and profilers
PDF
Mihai Criveti - PyCon Ireland - Automate Everything
PDF
A Hitchhiker's Guide to Cloud Native API Gateways
PDF
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
PPT
Node.js what's next (Index 2018)
PDF
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
Go for Operations
Docker Dhahran Nov 2016 meetup
Gradle.Enemy at the gates
給 RD 的 Kubernetes 初體驗 (gcpug 2019-06 version)
Thinking about Jenkins Security
Mini-training: Let’s Git It!
Aws ug dxb 2021 container series iv
Modern Tools for Building Progressive Web Apps
Crossing the Streams! Rollout Strategies to Keep Your Users Happy!
Flux is incubating + the road ahead
Clean Infrastructure as Code
Configuration as Code in Jenkins. What's new? Nov 2016
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
Использование AzureDevOps при разработке микросервисных приложений
E bpf and profilers
Mihai Criveti - PyCon Ireland - Automate Everything
A Hitchhiker's Guide to Cloud Native API Gateways
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison Dowdney
Node.js what's next (Index 2018)
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
Ad

Similar to Distributed Development, Centralised Delivery - SAGrid Jenkins + CVMFS (20)

PDF
Continuous Integration and Delivery of Research Applications
PDF
Continuous Integration and Delivery of Research Applications
PDF
Yale Jenkins Show and Tell
PPTX
The Rocky Cloud Road
PPTX
Continuous delivery applied
PDF
Continuous integration and delivery for java based web applications
PDF
Application Deployment at UC Riverside
PPTX
Continuous delivery applied (DC CI User Group)
PPTX
Investing in a good software factory and automating the build process
PPTX
Continuous Delivery Applied (AgileDC)
PPTX
Life Outside of TFS
PPTX
Automatize everything
PPT
Computing Outside The Box
PDF
Coding Secure Infrastructure in the Cloud using the PIE framework
PDF
Polyglot programming and agile development
PPTX
Continuous Delivery Applied (Agile Richmond)
PPTX
Continuous Delivery Applied
PDF
Dealing with large code bases. cd ams meetup
PPTX
Devops phase-1
PPTX
Continous delivvery devops Tools Technologies.pptx
Continuous Integration and Delivery of Research Applications
Continuous Integration and Delivery of Research Applications
Yale Jenkins Show and Tell
The Rocky Cloud Road
Continuous delivery applied
Continuous integration and delivery for java based web applications
Application Deployment at UC Riverside
Continuous delivery applied (DC CI User Group)
Investing in a good software factory and automating the build process
Continuous Delivery Applied (AgileDC)
Life Outside of TFS
Automatize everything
Computing Outside The Box
Coding Secure Infrastructure in the Cloud using the PIE framework
Polyglot programming and agile development
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied
Dealing with large code bases. cd ams meetup
Devops phase-1
Continous delivvery devops Tools Technologies.pptx
Ad

More from Bruce Becker (8)

PDF
Trusted Configurations for e-Infrastructure Deployment
PDF
The Sci-GaIA project
PDF
NICIS: Stepping Stones to a Cyberinfrastructure Commons
ODP
Now you can cite APHRC's data sets (CHAIN-REDS)
PDF
Gadget2 Science Gateway Development
ODP
Continuous integration
PDF
Sa grid application inventory 36
ODP
Paerip chain-becker-10-11-2011
Trusted Configurations for e-Infrastructure Deployment
The Sci-GaIA project
NICIS: Stepping Stones to a Cyberinfrastructure Commons
Now you can cite APHRC's data sets (CHAIN-REDS)
Gadget2 Science Gateway Development
Continuous integration
Sa grid application inventory 36
Paerip chain-becker-10-11-2011

Recently uploaded (20)

PDF
Placing the Near-Earth Object Impact Probability in Context
PPTX
Application of enzymes in medicine (2).pptx
PDF
Warm, water-depleted rocky exoplanets with surfaceionic liquids: A proposed c...
PDF
. Radiology Case Scenariosssssssssssssss
PPTX
perinatal infections 2-171220190027.pptx
PPTX
7. General Toxicologyfor clinical phrmacy.pptx
PPTX
TOTAL hIP ARTHROPLASTY Presentation.pptx
PDF
GROUP 2 ORIGINAL PPT. pdf Hhfiwhwifhww0ojuwoadwsfjofjwsofjw
PPTX
Introduction to Cardiovascular system_structure and functions-1
PDF
Sciences of Europe No 170 (2025)
PDF
BET Eukaryotic signal Transduction BET Eukaryotic signal Transduction.pdf
PPTX
Seminar Hypertension and Kidney diseases.pptx
PDF
Phytochemical Investigation of Miliusa longipes.pdf
PDF
The Land of Punt — A research by Dhani Irwanto
PDF
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
PDF
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
PDF
Is Earendel a Star Cluster?: Metal-poor Globular Cluster Progenitors at z ∼ 6
PPT
6.1 High Risk New Born. Padetric health ppt
PPTX
Fluid dynamics vivavoce presentation of prakash
PPTX
Microbes in human welfare class 12 .pptx
Placing the Near-Earth Object Impact Probability in Context
Application of enzymes in medicine (2).pptx
Warm, water-depleted rocky exoplanets with surfaceionic liquids: A proposed c...
. Radiology Case Scenariosssssssssssssss
perinatal infections 2-171220190027.pptx
7. General Toxicologyfor clinical phrmacy.pptx
TOTAL hIP ARTHROPLASTY Presentation.pptx
GROUP 2 ORIGINAL PPT. pdf Hhfiwhwifhww0ojuwoadwsfjofjwsofjw
Introduction to Cardiovascular system_structure and functions-1
Sciences of Europe No 170 (2025)
BET Eukaryotic signal Transduction BET Eukaryotic signal Transduction.pdf
Seminar Hypertension and Kidney diseases.pptx
Phytochemical Investigation of Miliusa longipes.pdf
The Land of Punt — A research by Dhani Irwanto
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
Is Earendel a Star Cluster?: Metal-poor Globular Cluster Progenitors at z ∼ 6
6.1 High Risk New Born. Padetric health ppt
Fluid dynamics vivavoce presentation of prakash
Microbes in human welfare class 12 .pptx

Distributed Development, Centralised Delivery - SAGrid Jenkins + CVMFS

  • 1. Jenkins + CVMFS : Distributed Development, Centralised Delivery Bruce Becker | bbecker@csir.co.za Coordinator: SAGrid SANREN, Meraka Institute, CSIR Stefanus Riekert | RiekertSJPK@ufs.ac.za HPC Application Engineer University of the Free State
  • 2. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Outline ● What users want ● SAGrid VO – a catch-all VO with many applications ● Problem statements: ● Problem 1: ”the usual problem” – maintaining applications in a distributed computing environment ● Problem 2: ”Another usual problem” - maintaining a complex application inventory ● General solution : CVMFS + Jenkins ● Some specifics of SAGrid CI platform ● Outlook
  • 3. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za SAGrid as a catch-all VO ● The South African National Grid operates a catch-all VO which all South African researchers can use to access computing and data resources. ● SAGrid VO is not a domain-specific VO, so ● several widely-varying uses for the applications supported by this VO ● Applications requested by users or communities themselves
  • 4. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za What users want Amazing infrastructure Some users want highly varied, modular application selection Vertically integrated Highly specialised applications Highly trained supportHighly trained support
  • 5. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za What users get sometimes
  • 6. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za The problem (1) - ”the usual problem” ● Software distribution was done mostly by hand”: ● Someone from the ops team develops script to install the application ● Apps installed via job submission ● Tags applied via script or by the job itself ● Issues: ● Major overhead of work ● Inconsistent installation procedures between applications and sites ● Bottleneck in porting applications (has to be done by someone in the VO) ● Duplication of effort, especially in dependencies of applications ● Difficult to manage application lifecycles
  • 7. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za The problem (2) - what about the community ? ● Managing the inventory in a catch-all VO can be complex when there are many applications ● Prioritising porting requests depends on the knowledge of the export porting the application ● Can lead to major delays in porting and deploying applications ● However, a user or community usually has an expert who knows how to tune, port and configure the application properly, as well as dependencies ● Usually, ”they” have to conform to ”us” - learn grid tools and terminology, etc
  • 8. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Problem (3) : Changes to the playing field ● New middleware stacks ● New architectures – GPGPU, ARM
  • 9. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Questions to answer ● How do we lower the barrier to entry to the grid or cloud infrastructure ? ● How can the application expert prove to the resource provider that the application will actually run on the execution environment of the site ? ● How can we manage the lifecycle of applications across multiple versions, architectures, configurations ? ● How can we ensure that once applications are ”certified”, they are actually available on as many sites as possible ?
  • 10. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za General Solution: Jenkins + CVMFS ● The issues outlined are ”typical” in a large software project ● Usually solved by judicious use of Continuous Integration system ● Once applications have been ”ported”, put them into a trusted repository ● Previously – built RPMs, but required site- admin intervention ● One-time configuration with CVMFS
  • 11. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za First, some changes ● Distribute the effort, centralise the tools ● Move repository from ”closed” SVN repo – https://ops.sagrid.ac.za/trac/svn/repo ● to git – https://github.com/SAGridOps/SoftwareInstallation ● Don't have to give write access to a single repo, instead accept pull requests ● Take advantage of all the Github infrastructure ● Expand possible contributors to those ”outside” the infrastructure ● Recognise individuals' contribution
  • 12. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Recognise individuals...
  • 13. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Decentralise the team
  • 14. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Collaborate with code
  • 15. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Let the robots do the work ● Define what we want to deploy – let the experts take care of how to deploy ● DevOps paradigm – same review/tag/release mechanisms on operations code as we have for scientific applications ● Teach a marketable skill ● Allow specialisation ● Enable remote management of complex services ● Ensure that published methodology is adopted methodology
  • 16. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Quality Control and feedback ● Ensure that requested applications are included in the repo ● Provide testing and QA infrastructure ● Self-serve to users
  • 17. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za The CI environment ● Jenkins is extremely flexible... can do almost anything ● AuthN/AuthZ ● Currently using Github Oauth ● Take advantage of future Identity Federation ● We wanted to simulate different execution environments ● Already in production ● Planned for future ● Track and re-use depedendencies
  • 18. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Matrix-based builds ● Independent different builds and build statuses for different configurations: ● Application name ● Version ● OS ● Architecture ● … can add specific tuning configurations... ● We can see exactly what's broken where – build more resilient integration code.
  • 19. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Typical workflow Testingmatrix Defines relevant tests in Jenkins Writes code to pass required tests Dev/Stage env.Application developer Infrastructure expert Reads description of execution environment tests Promote a build to CVMFS
  • 20. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Dependency management simple case ● Common problem with applications : need a specific version of a compiler ● Compiling the compiler can itself be tricky... ● Jenkins tests the full dependency chain necessary
  • 21. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Real-world application ● GADGET – astrophysics hydrodynamic simulations ● Many (levels of) dependencies
  • 22. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Public Application Dashboard
  • 23. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Authenticated view
  • 24. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Generic build script # GADGET requires HDF5 FFTW2 ZLIB and  openmpi module add ci module add fftw/2.1.5 module add hdf5 module add openmpi module add gsl # GADGET requires HDF5 FFTW2 ZLIB and  openmpi module add ci module add fftw/2.1.5 module add hdf5 module add openmpi module add gsl rm ­rf $FFTW_DIR tar xvfz /repo/$SITE/$OS/$ARCH/fftw/$FFTW_VERSION/build.tar.gz ­C / rm ­rf $HDF5_DIR tar xvfz /repo/$SITE/$OS/$ARCH/hdf5/$HDF5_VERSION/build.tar.gz ­C / rm ­rf $OPENMPI_DIR tar xvfz /repo/$SITE/$OS/$ARCH/openmpi/$OPENMPI_VERSION/build.tar.gz ­C / rm ­rf $GSL_DIR tar xvfz /repo/$SITE/$OS/$ARCH/gsl/$GSL_VERSION/build.tar.gz ­C / rm ­rf $FFTW_DIR tar xvfz /repo/$SITE/$OS/$ARCH/fftw/$FFTW_VERSION/build.tar.gz ­C / rm ­rf $HDF5_DIR tar xvfz /repo/$SITE/$OS/$ARCH/hdf5/$HDF5_VERSION/build.tar.gz ­C / rm ­rf $OPENMPI_DIR tar xvfz /repo/$SITE/$OS/$ARCH/openmpi/$OPENMPI_VERSION/build.tar.gz ­C / rm ­rf $GSL_DIR tar xvfz /repo/$SITE/$OS/$ARCH/gsl/$GSL_VERSION/build.tar.gz ­C / Set up the environment Clean build, retrieve dependency artifacts
  • 25. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za Generic build script make install DESTDIR=$WORKSPACE/build mkdir ­p $REPO_DIR rm ­rf $REPO_DIR/* tar ­cvzf $REPO_DIR/build.tar.gz ­C  $WORKSPACE/build apprepo make install DESTDIR=$WORKSPACE/build mkdir ­p $REPO_DIR rm ­rf $REPO_DIR/* tar ­cvzf $REPO_DIR/build.tar.gz ­C  $WORKSPACE/build apprepo Actually build... Create the artifact cat <<MODULE_FILE #%Module1.0 ## $NAME modulefile ## proc ModulesHelp { } {     puts stderr "       This module does nothing but alert the user"     puts stderr "       that the [module­info name] module is not available" } preqreq("gsl","fftw/2.1.5","hdf5") module­whatis   "$NAME $VERSION." setenv       GSL_VERSION       $VERSION setenv       GSL_DIR           /apprepo/$::env(SITE)/$::env(OS)/$::env(ARCH)/$NAME/$VERSION prepend­path LD_LIBRARY_PATH   $::env(GSL_DIR)/lib MODULE_FILE ) > modules/$VERSION cat <<MODULE_FILE #%Module1.0 ## $NAME modulefile ## proc ModulesHelp { } {     puts stderr "       This module does nothing but alert the user"     puts stderr "       that the [module­info name] module is not available" } preqreq("gsl","fftw/2.1.5","hdf5") module­whatis   "$NAME $VERSION." setenv       GSL_VERSION       $VERSION setenv       GSL_DIR           /apprepo/$::env(SITE)/$::env(OS)/$::env(ARCH)/$NAME/$VERSION prepend­path LD_LIBRARY_PATH   $::env(GSL_DIR)/lib MODULE_FILE ) > modules/$VERSION Create the modulefile
  • 26. Bruce Becker: Coordinator, SAGrid | bbecker@csir.co.za | http://www.sagrid.ac.za So, it works ! … almost Next steps ● We have an open, collaborative, low-barrier platform for researchers to bring applications to the grid ● Small technical tasks : ● Implement promoted builds mechanism to populate sagrid.ac.za CVMFS repo ● Implement SAML AuthN, integrate IdF ● Probes to check that CVMFS is mounted on sites (?) ● Operating in ”stealth mode” at the moment – not advertising, but open to anyone who is interested to collect feedback ● Addressing specific user communities to test drive the system: ● Machine learning astro applications (rapid prototyping) ● Bioinformatics application suites (complex ecosystem) ● Present next phase of the project in November in Cape Town – move to production