Continuous Integration for Ruby on Rails Presentation

Total Page:16

File Type:pdf, Size:1020Kb

Continuous Integration for Ruby on Rails Presentation Continuous Integration for Ruby on Rails Ross Niemi ThoughtWorks, Inc. Email: [email protected] Blog: http://rossniemi.wordpress.com March 12th, 2007 Agenda • What is Continuous Integration (CI)? • What CI tools are currently available for Ruby and Ruby on Rails (RoR)? • How do these tools compare? • Demo • Questions Agile Software Development • Agile Manifesto – Individuals and interactions over processes and tools – Working software over comprehensive documentation – Customer collaboration over contract negotiation – Responding to change over following a plan • Continuous Integration helps us to deliver working software Continuous Integration • “… is a software development practice where members of a team integrate their work frequently…” • “Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible” - Martin Fowler Before we continue… • It is important to note that Continuous Integration: – IS NOT a tool or product – IT IS a practice or philosophy that a team has to buy into • Recall: Individuals and interactions over processes and tools • Tools can be used to help automate Continuous Integration “Continuous Integration is an Attitude, Not a Tool” - James Shore Early Days • Check-in “token” – Developer wanting to check in code into the repository must acquire the “token” – Only one person can check in at a time – The same person would then check out the code on a different machine and run the build in a clean environment – If the build “breaks”, the offender fixes it on their machine and tries the verification step again – Once the build passes, the “token” is returned so someone else could perform a check in – Very serial process, time consuming Early Days • Cron / Scheduler Jobs – An attempt to automate the verification build – Schedule builds to happen during set times • Nightly or Daily Builds (quiet times) • Depending on the length of the build, you typically would want to increase the build frequency – The greater the time between scheduled builds • The less useful the feedback from the build would be • The more difficult debugging a broken build would be Present Day • CI Tools are responsible for orchestrating the verification build – Detects a change in the code repository – Update its working copy – Runs the build and executes tests – Notifies interested parties of success or failure • The repetition of these steps is known as a build cycle or build loop • Typically implemented as a server / daemon CI Tool Realizations • By automating the verification build: – The verification step is done for the committer automatically – Verification builds can be done more often • For example, after every checkin – The tool can notify the developer(s) of a broken or successful build as soon as the verification build finishes – Shorter verification build cycles means: • The developer can check in code more often (XP) • Faster feedback will lead to greater productive Typical Architecture CI for Ruby On Rails • Jay Field!s Poor Man!s CI • Continuous Builder • Cerberus • CruiseControl with CI_Reporter • CruiseControl.rb Jay Field!s Poor Man!s CI • If using Subversion, use a post-commit hook to fire off a build • Pass a revision number as an argument – Use number to create output directories for running build • If on a Mac, use Growl to send a status message to developer workstation • http://jayfields.blogspot.com/2006/07/ruby- continuous-integration.html Continuous Builder • Simple Rails plugin written by DHH • Add a Subversion post-commit hook to build the latest revision and notify the developer on success / failure by: – Email – Campfire • http://dev.rubyonrails.org/browser/plugins/con tinuous_builder Cerberus • Designed to be a light-weight CI solution with a small memory footprint – Loaded into memory and executed only when needed • Similar to previous approaches, but offers support for managing multiple projects – Command line – YML • http://cerberus.rubyforge.org/ Commands # Add application directory to monitor cerberus add directory APPLICATION_NAME=application RECIPIENTS=email address, … # Add application SVN repository to monitor cerberus add subversion_url APPLICATION_NAME=application RECIPIENTS=email address, … # List of active projects cerberus list # Build a single or all applications cerberus build application cerberus buildall # Command line help cerberus --help Files and Directories # Default home $CERBERUS_HOME=~/.cerberus # Server artifacts ~/.cerberus/config.yml ~/.cerberus/error.log # Project artifacts ~/.cerberus/config/application.yml ~/.cerberus/work/application /logs - timestamped build logs /Status.log - status of last build Build Loop • Cerberus will check if there were any changes to application directory or Subversion repository – Build only if there were • Since build and buildall are one time shots, you will either need to setup Cerberus with: – Cron (polling) – Subversion post-commit hook (trigger) CruiseControl • The defacto standard for Continuous Integration in the Java world • CruiseControl 2.6 has direct support for Rake – Leverage existing plugins • Source Code Management (SCM) systems • Publishers / Notifiers • Using CI Reporter with CruiseControl will allow for reporting on test failure • http://cruisecontrol.sourceforge.net Commands cruise_dir/cruisecontrol.sh cruise_dir/cruisecontrol.bat • Windows service now available Files and Directories # Server / Project configuration cruise_dir/config.xml # Project artifacts - can override locations cruise_dir/project.ser cruise_dir/projects/project cruise_dir/logs/project cruise_dir/artifacts/project Configuration • CruiseControl build projects are defined in cruise_dir/config.xml • Each build project has the following sections: – Bootstrappers are operations done before the build takes place, regardless if a build is necessary or not – ModificationSet is scheduled to poll to see if change in the code repository occurred – Schedule is a reoccurring event used to perform a build provided that there are modifications – Publishers distribute the results of a build – Log is used to report on the build execution CI Reporter • Can use with existing CI solutions that understand JUnit XML – CruiseControl, Bamboo, etc. • Support for Test::Unit or RSpec • http://svn.caldersphere.net/svn/main/ci_ reporter/ Files and Directories • Modify Rakefile require 'rubygems' gem 'ci_reporter’ # use the following if using RSpec require 'ci/reporter/rake/rspec’ # use the following if using Test::Unit require 'ci/reporter/rake/test_unit’ • Make ci:setup:<rspec|testunit> a dependency of your test tasks CruiseControl.rb • CruiseControl for Ruby and RoR • Written from the ground up on Rails • http://cruisecontrolrb.rubyforge.org/ Commands # Start the web server ./cruise start [options ] --port=port --binding=ip --daemon --environment=test|development|production # Add application SVN repository to monitor ./cruise add your_project --url subversion-url [--username username --password password] # Build your_project ./cruise build your_project [--trace ] # Command line help ./cruise help [command ] Files and Directories # Server artifacts cruise_dir/config/site_config.rb # Project artifacts cruise_dir/projects/your_project /work /build-rev /build.log /build_status.status /changeset.log /cruise_config.rb Build Loop • Assumption: – Rails application built by Rake • Alternatively: – Use Rake to build other applications • Ruby, Java – Could call a shell script Rake Execution • Loads all Rake files from cruise_dir/tasks and then the Rakefile of your_project • The cc:build task is invoked and looks for all other Rake tasks defined in your_project – cruise_dir/tasks/cc_build.rake Rake Execution Note: project.rake_task and project.build_command both cannot be set Build Scheduling • Specify a polling interval in the cruise_config.rb – project.scheduler.polling_interval = 5.minutes • Provide your own custom scheduler – project.scheduler = MyCustomScheduler.new(project) Build Artifacts • Artifacts are visible via dashboard • CC_BUILD_ARTIFACTS environment variable is set by CruiseControl.rb – Make sure your Rakefile task writes to this directory or in a subdirectory • Coverage reports, build products, etc. Comparison Matrix • Just the facts, please – http://rossniemi.wordpress.com/docs Slides make me sleepy… • Where is my Demo! Questions?.
Recommended publications
  • Apache Ant Best Practices
    08_Lee_ch05.qxd 5/3/06 5:12 PM Page 81 C HAPTER 5 Apache Ant Best Practices This chapter looks in more detail at some best practices for using Ant on real projects. First I describe the use of property files to enable configuration of the build process depending on a user’s role and requirements. I then describe how best to integrate Ant with IBM Rational ClearCase. Finally, I look at some general best practices for supporting the build process on large projects. Aims of This Chapter Apache Ant is a powerful build tool with significant built-in capabilities. However, a few capabil- ities and best practices stand out; they are described here. After reading this chapter, you will be able to • Understand what Ant property files are and how they can be used to make build scripts more maintainable. • Understand how to use Ant’s capabilities to better integrate with IBM Rational ClearCase. • Implement Ant build files that support reuse and maintainability on large projects. This chapter assumes that you are familiar with the basic concepts of Apache Ant that were discussed in Chapter 4, “Defining Your Build and Release Scripts.” Property Files From the perspective of Chapter 4, an Ant build.xml file is a single centralized build file that defines a repeatable process for bringing together an application, usually producing some form of 81 08_Lee_ch05.qxd 5/3/06 5:12 PM Page 82 82 Chapter 5 Apache Ant Best Practices executable output. Although a single build.xml file can be enough to drive the build process, in practice it can quickly become large and unwieldy.
    [Show full text]
  • Using Wordpress As a Content Management System Jonathan P
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by University of San Francisco The University of San Francisco USF Scholarship: a digital repository @ Gleeson Library | Geschke Center Entrepreneurship, Innovation, and Strategy School of Management 2008 Instant Websites: Using WordPress as a Content Management System Jonathan P. Allen University of San Francisco, [email protected] Follow this and additional works at: http://repository.usfca.edu/esib Part of the Technology and Innovation Commons Recommended Citation Allen, Jonathan P., "Instant Websites: Using WordPress as a Content Management System" (2008). Entrepreneurship, Innovation, and Strategy. Paper 15. http://repository.usfca.edu/esib/15 This Conference Proceeding is brought to you for free and open access by the School of Management at USF Scholarship: a digital repository @ Gleeson Library | Geschke Center. It has been accepted for inclusion in Entrepreneurship, Innovation, and Strategy by an authorized administrator of USF Scholarship: a digital repository @ Gleeson Library | Geschke Center. For more information, please contact [email protected]. WITS- 2008 • Edited by Ram D. Gopal, University of Connecticut R. Ramesh, SUNY at Buffalo • Local Arrangements Chair Nicolas Prat, ESSEC Business School • Prototype and Technology Instruction Chair Kumar Mehta, George Mason University • Submission System Coordinator Sanjukta Das Smith, SUNY at Buffalo Instant Websites: Using WordPress as a Content Management System J.P. Allen University of San Francisco, [email protected] Executive Summary Abstract ln thi s teaching module, you will create a website to promote a business, product, or service using a simple Content Management System (CMS). With the nextbusnews.com site a a model, you will launch a promotional website usLng the open source blogging platform WordPress as a simple CMS.
    [Show full text]
  • A Survey on Content Management System, Software's and Tools
    ISSN (Online) 2393-8021 IARJSET ISSN (Print) 2394-1588 International Advanced Research Journal in Science, Engineering and Technology ISO 3297:2007 Certified Vol. 4, Issue 11, November 2017 A Survey on Content Management System, Software's and Tools Madhura K Assistant Professor, Computer Science Department, Presidency University, Bangalore1 Abstract: This paper contains a survey of content management system, content management process, architecture and working. Also contains different types of tools and software. Content Management (CM) is the process for collection, delivery, retrieval, governance and overall management of information in any format. The term is typically used in reference to administration of the digital content lifecycle, from creation to permanent storage or deletion. The content involved may be images, video, audio and multimedia as well as text. A Content Management System (CMS) is a computer application that supports the creation and modification of digital content. It is typically used to support multiple users working in a collaborative environment. A Content Management System (CMS) is a tool for creating and managing digital content such as documents, text, web pages, videos and images.A content management system (CMS) is a software application or set of related programs that are used to create and manage digital content. CMSes are typically used for Enterprise Content Management (ECM) and Web Content Management (WCM). An ECM facilitates collaboration in the workplace by integrating document management, digital asset management and records retention functionalities, and providing end users with role-based access to the organization's digital assets. A WCM facilitates collaborative authoring for websites. ECM software often includes a WCM publishing functionality, but ECM webpages typically remain behind the organization's firewall.
    [Show full text]
  • Getting Started with Wordpress Plugins
    © 2011 iThemes Media LLC. All rights reserved in all media. May be shared with copyright and credit left intact.! Meet PluginBuddy. iThemes Media LLC was founded in 2008 by Cory Miller, a former newspaper journalist and public relations/communication practitioner, turned freelance moonlighting web designer, turned full-time entrepreneur. Miller founded iThemes in his home, fulfilling a lifelong dream of running his own company. Since then the company has grown into a full enterprise providing professional, premium themes (iThemes.com), professional plugins (PluginBuddy.com) and over 250 hours of professional web design and WordPress developer training – with 15-20 new courses being added each month (WebDesign.com). These three brands make up what is generally referred to as the iThemes brand. © 2011 iThemes Media LLC. 1 All rights reserved in all media. May be shared with copyright and credit left intact.! 11 Things You Need to Know: Introduction 3 Sometimes (well, usually) Less is More 4 If You’re Not Using It, Delete It 5 Don’t Be Too Cool For School 6 Avoid Overlapping Plugins 7 Use the Real McCoy 8 Ask People You Trust 9 Keep Your Plugins Up To Date 10 Consider Coding Minor Plugin Functions 11 When Your Site Stops Working...It’s Usually Because of a Plugin 12 Always Use These Must-Have Plugins 13 Practice Respect 15 Plus: Tools and Support to Do the Work 16 Recommended Books 17 © 2011 iThemes Media LLC. 2 All rights reserved in all media. May be shared with copyright and credit left intact.! Introduction Throughout this time of growth, we’ve learned a lot of do’s and don’ts.
    [Show full text]
  • Installation Guide for Oracle Team Productivity Center Server 11G Release 2 (11.1.2.1.0)
    Oracle® Fusion Middleware Installation Guide for Oracle Team Productivity Center Server 11g Release 2 (11.1.2.1.0) E17075-02 September 2011 This document provides information on: ■ Section 1, "Oracle Team Productivity Center Server System Requirements" ■ Section 2, "Installing the Oracle Team Productivity Center Server" ■ Section 3, "Installing an Oracle Team Productivity Center Connector" ■ Section 4, "Installing Oracle Team Productivity Center Server on a Production Oracle WebLogic Server" ■ Section 5, "Installing and Running CruiseControl Test Collection" ■ Section 6, "Documentation Accessibility" 1 Oracle Team Productivity Center Server System Requirements For the most current system requirements, please refer to the Oracle Fusion Middleware Installation Guide for Oracle JDeveloper. 2 Installing the Oracle Team Productivity Center Server The installation software for Oracle Team Productivity Center Server is distributed as a platform-independent JAR file. Download the Oracle Team Productivity Center Server installation JAR file from the Oracle Technology Network (OTN) web site: http://www.oracle.com/technetwork/developer-tools/tpc/downloads/ index.html The following sections describe how to install the Oracle Team Productivity Center Server: ■ Section 2.1, "Before You Begin" ■ Section 2.2, "Prerequisites for Installation" ■ Section 2.4, "Installer Screens for Server Installation" ■ Section 2.5, "Upgrading Oracle Team Productivity Center Server with Apache Tomcat 6.0.20" You can choose to install the Oracle Team Productivity Center Server either as a new installation or as an update to an existing server. The installation software is the same, but there are slight differences in the procedure for installing the server depending on whether you are creating a new installation or upgrading an existing one.
    [Show full text]
  • Introduction to Cruisecontrol Agenda Benefits of Continuous Integration Success Factors
    Ø Introduction to CruiseControl * Change the marked fields if you are presenting these slides yourself. Refer to the overview and instructions for details. Joe Schmetzer* http://www.exubero.com/* This work is licensed under a Creative Commons Attribution-ShareAlike2.5 License. Resources YouTube clip as motivation: Every Build You Break Agenda Continuous Integration o Benefits of Continuous Integration o Success Factors o Successful Build Defined CruiseControl o What is CruiseControl? o How Does CruiseControl Work? o CruiseControl Demonstration Summary Questions Benefits of Continuous Integration Removes integration sessions Minimizes number of integration bugs o If you build and test your software once an hour, no problem is more than an hour old. Improves team work Delivers latest best build product Reduces the overall development cost by: o making it easier to find and fix problems o provides valuable and timely information, letting the development be managed more tightly. Resources Refer to the original article on CI by Martin Fowler and Matthew Foemmel: http://www.martinfowler.com/articles/continuousIntegration.html Mike Clark's "Dear Manager" articles at http://www.clarkware.com/cgi/blosxom/DearManager give further information about the return on investment. Success Factors Single source code repository Automated build scripts Automated tests Developers' discipline o Synchronise often o Don't break the build o When you break the build, fix it. Resources Refer to the original article on CI by Martin Fowler and Matthew
    [Show full text]
  • Wordpress Vs. Joomla Which Is the Right Cms for You?
    WORDPRESS VS. JOOMLA WHICH IS THE RIGHT CMS FOR YOU? BY NICK SCHÄFERHOFF WHITE PAPER WHITE PAPER WordPress Vs. Joomla – Which is The Right CMS For You? The emergence of open-source content management systems has done Joomla - The Basics tremendous things to level the playing field online. Thanks to free software solutions, today literally anyone can start their own website, blog, business, and career on the internet. Of all available platforms, there is no debate that WordPress has done by far the best. Thefastest growing CMS for six consecutive years, the platform of choice for half of all CMS-based websites and powering more than a quarter of the entire internet -- the numbers speak for themselves. Yet, there are other solutions for building websites that are looking to Like WordPress, Joomla is an open-source content management knock WordPress off of its throne, one of which we recently highlighted system based mainly on PHP with an SQL database holding the in a white paper on the differences between Drupal and WordPress. This whole thing together. It derives its name from the Swahili word time we want to have a look at another CMS contender: Joomla. Jumla, which means all together or as a whole, which I quite like. Overall, Joomla is the second most popular content management To better understand the system used on internet. differences between the two The platform was established in 2005 as a fork from another CMS called Mambo and has overall been downloaded 68 million times, platforms, in this white paper I according to their website.
    [Show full text]
  • Gender and Sexuality
    Annual Review FAR BEYOND THE RAINBOW. of Critical Psychology 11, 2014 THE CONSTITUTION OF COLLECTIVE IDENTITIES Gender BETWEEN CIVIL SOCIETY AND THE STATE and Marco Aurélio Máximo Prado and Frederico Viana Machado Sexuality Universidade Federal de Minas Gerais e Pontifícia Universidade Católica do Rio Grande do Sul, Brazil Abstract The present work focuses on the constitution of collective identities around the Parade for LGBT Gay Pride “Belô” (Belo Horizonte – MG). Transforming processes, which involves the foundation of al- ternative policies that aim for the equivalence of civil rights and the fulfillment of the principles of citizenship for lesbians, gays, bisexuals and transgender, had been analyzed. We discussed the specificity of these experiences in the city of Belo Horizonte, trying to apprehend them first and foremost in the movement that goes from the civil soci- ety to the political institutional spaces, without losing sight of the other way round. From a historical retrospective of the tenth first editions of the event and of the local activist actions in this period, one can observe the construction of a felling of injustice and the awareness of social rights, besides the formation of political boundaries in the context of an emergent LGBT community. From an analysis of the political opportunities and of the collective identities’ construction, we investigated the strategies for facing, which are structured in this politi- cal scenery, the diversity of actors with whom this movements establish a dialogue as wells as the contradictions and conflicts that derive from it. Various qualitative methodologies were used, as interviews (individ- ual and collective) participant observation (minutes and field notes) and documentary research.
    [Show full text]
  • Call Javascript Function in Php Example
    Call Javascript Function In Php Example Hexavalent and hugger-mugger Adolph centred, but Colin evil grudge her snash. Multilateral and flagellated Nicky open-fire, sobut hexagonally! Davon dyspeptically gate her harpooneer. Sequined Laurens sometimes underfeeding his disdain interiorly and indorses Pretty common anytime you make experience of a JavaScript structure that. A function call where an internal that passes control and arguments if any wish a function and has the form and expression-listopt where expression not a function name or evaluates to a function address and stellar-list is a necessary of expressions separated by commas. This action plan run outside the footer of any admin page where ACF fields may exist. PHP runs in the server JavaScript runs in the client So php can't great a JavaScript function. How to send GET lead POST AJAX request with JavaScript. What set the 7 functions of management? Solved call a javascript function VBA Express. Android Go Java JavaScript Nodejs Objective-C PHP Python Ruby Swift. Well organized and vein to understand Web building tutorials with lots of examples of flood to use HTML CSS JavaScript SQL PHP Python Bootstrap Java. Function Calls Microsoft Docs. Calling a JavaScript function from PHP Ex 2 YouTube. How often call JavaScript function in html with javascript tutorial introduction javascript oops application of javascript loop variable objects map typedarray etc. Passing php variable as Javascript argument Dynamic Drive. You can adopt include calls to your Javascript functions in the HTML code of your module. What detect the Functions of Management 7 Functions of Management.
    [Show full text]
  • Rails for the “Enterprise”
    Beam me up, Scotty! Rails for the “Enterprise” Charles Johnson Rick Bradley Director, IS Applications Project Manager Centerstone Centerstone 1 What Enterprise? 2 What Enterprise? • Enterprise system? 2 What Enterprise? • Enterprise system? •Enterprise software? 2 What Enterprise? • Enterprise system? •Enterprise software? •Enterprise platform? 2 Centerstone Enterprise 3 Centerstone Enterprise • 25 Counties 3 Centerstone Enterprise • 25 Counties • 150 Locations 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients • 1,100 Staff 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients • 1,100 Staff • Comprehensive Electronic Record 3 Centerstone Enterprise Requirements Dimension 4 Centerstone Enterprise Requirements Dimension Available & Reliable 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere Scalable 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere Scalable • 300 to 9000 users 4 Centerstone Enterprise Requirements Dimension 5 Centerstone Enterprise Requirements Dimension Maintenance 5 Centerstone Enterprise Requirements Dimension Maintenance
    [Show full text]
  • Build Notifications in Agile Environments
    University of Calgary PRISM: University of Calgary's Digital Repository Science Science Research & Publications 2008-01-14 Build Notifications in Agile Environments Ablett, Ruth; Maurer, Frank; Sharlin, Ehud; Denzinger, Joerg; Schock, Craig http://hdl.handle.net/1880/45854 unknown Downloaded from PRISM: https://prism.ucalgary.ca Build Notifications in Agile Environments Abstract. In an agile software development environment, developers write code that should work together to fulfill the wishes of the customer. Continuous integration (CI) ensures that code from different individuals integrates properly. CI compiles the entire codebase, deploys and tests it with each change. CI alerts developers of any problems as errors can be fixed more easily if caught earlier in the process. This paper compares the effectiveness of different types of mechanisms for notifying developers to a successful or unsuccessful build. Two different quantitative and qualitative user studies were performed testing the effectiveness of three types of notification devices – one virtual e-mail based mechanism, one using ambient lava lamps, and one robotic device. The results show that most developers preferred an easily visible but unobtrusive ambient device combined with an e-mail describing the problem in more detail. Keywords: Agile methods, information awareness, ambient display, continuous integration 1 Introduction Agile methods [1] are becoming popular in the software industry. In agile software development projects, there may be anywhere from one to hundreds of developers working concurrently on the code base, so it is imperative that all software written by each developer integrates properly into the entire project. To this end, most agile teams adopt Continuous Integration (CI).
    [Show full text]
  • Continuous Integration (CI) Needs and Wishes for Developers of Proprietary Code
    Continuous Integration (CI) Needs and Wishes for Developers of Proprietary Code Michael Hilton, Nicholas Nelson, Danny Dig Timothy Tunnell, Darko Marinov School of EECS, Oregon State University CS Department, University of Illinois {hiltonm,nelsonni,digd}@oregonstate.edu {tunnell2,marinov}@illinois.edu Abstract—Continuous integration (CI) systems automate the Open-source projects are often considered fundamentally dif- compilation, building, and testing of software. Despite CI being ferent from proprietary-code projects [6]. Differences between one of the most widely used processes in software engineering, open-source and proprietary-code projects include that open- we do not know what motivates developers to use CI, and what barriers and unmet needs they face. Without such knowledge source projects foster more creativity [7], have fewer defects [7], developers make easily avoidable errors, managers reduce the and assign work differently [8]. However, similarities have also productivity of developers by making misinformed decisions, tool been found, including how GitHub is used [9], overall project builders invest in the wrong direction, and researchers miss many complexity [7], and amount of modularity [7]. opportunities for improving the software engineering practice. There are still many gaps in our knowledge about why Given the large fraction of proprietary code development, un- derstanding how proprietary developers are using CI is vital to developers use CI, and what barriers they face, especially for improving it. projects of proprietary code. What motivates developers to use We present the first study of how CI is used in the proprietary CI? What are the barriers that developers face when using development of software. We conduct 16 semi-structured inter- CI? What needs do developers have that are unmet by their views with developers from different industries and development current CI system(s)? Do proprietary developers have the same scale.
    [Show full text]