Skip to content
CMO & CTO
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

  • Digital Experience
    • Experience Strategy
    • Experience-Driven Commerce
    • Multi-Channel Experience
    • Personalization & Targeting
    • SEO & Performance
    • User Journey & Behavior
  • Marketing Technologies
    • Analytics & Measurement
    • Content Management Systems
    • Customer Data Platforms
    • Digital Asset Management
    • Marketing Automation
    • MarTech Stack & Strategy
    • Technology Buying & ROI
  • Software Engineering
    • Software Engineering
    • Software Architecture
    • General Software
    • Development Practices
    • Productivity & Workflow
    • Code
    • Engineering Management
    • Business of Software
    • Code
    • Digital Transformation
    • Systems Thinking
    • Technical Implementation
  • About
CMO & CTO

Closing the Bridge Between Marketing and Technology, By Luis Fernandez

Jenkins Pipelines for Real Teams

Posted on October 27, 2012 By Luis Fernandez

You ship when your pipeline says so. Jenkins is where that decision gets made, every single commit, without excuses.
Real teams treat the pipeline like a product, not a side script that someone keeps under their desk.

When people say Jenkins pipeline right now they usually mean a string of freestyle jobs that push code from commit to release with gates you can trust. That is the right mindset. Start with one job per stage and make the stage crystal clear. Build compiles and runs your unit tests. Verify runs fast checks like static analysis with PMD or Checkstyle and code coverage with Cobertura. Package creates a versioned artifact and fingerprints it. Promote moves that exact artifact forward without rebuilding so you stop arguing about what went to staging. Jenkins gives you the glue with Upstream and Downstream triggers, Parameterized Trigger, Copy Artifact and the very handy Promoted Builds plugin. If your team needs more complex fan out and fan in, the Build Flow plugin lets you describe the flow in Groovy and keep it under version control. Keep it boring and visible. The Build Pipeline view is not just a pretty board. It is how a product manager or a tester knows what is where without asking in chat. The day you stop rebuilding on every stage and start promoting the same bits is the day people stop saying it works on my machine. Wire in email ext for sane notifications and add an IRC notifier if your team lives there. If you get flaky networks or flaky tests, contain them, do not normalize red. The Naginator plugin can retry known transient failures, and a Quarantine view makes it clear what tests need love. Keep the noise low so that a red build means stop and fix. Treat Jenkins like the traffic cop who only whistles when something matters.

A real pipeline is equal parts tooling and guardrails. Start with source control triggers. For Git on GitHub or your own Gitolite, web hooks fire builds right away. For Subversion you can poll every few minutes, but try to move to push so builds are fresh. Use labels to put jobs on the right slaves and keep environments predictable. A Maven build on a Java 6 machine should not jump onto a Java 7 box just because it is idle. If you run in the cloud, the EC2 plugin spins up slaves on demand and you can bake AMIs with the right JDK and build tools. Cache what is safe. A Nexus or Artifactory mirror near Jenkins shortens builds for Maven and Gradle. Clean what is noisy. The Workspace Cleanup plugin keeps disks from filling and removes that strange file that broke a build last week. To pull in dependencies from other jobs, stick with Copy Artifact and enable fingerprints so you can answer which build of core ended up in the mobile app. For UI checks, a Jenkins job can start a Selenium Grid, run WebDriver suites headless with Xvfb, archive screenshots on failure and publish test trends that a product owner understands. Tie your jobs to a quality gate with Sonar so you can reject a promotion when coverage drops or when complexity blasts past your agreed budget. If you must deploy from Jenkins, do it with proven tools not with ad hoc bash. For Ruby apps hook Jenkins to Capistrano. For Python use Fabric. For servers describe state with Chef or Puppet, then let Jenkins push known artifacts into known roles. Keep secrets out of job configs. The Credentials plugin stores keys and passwords and masks them in logs so your staging password never ends up in an email. Watch for resource contention. Use Throttle Concurrent Builds to prevent the database setup job from running twice and corrupting your test data. Publish everything the team needs to see. JUnit reports, HTML dashboards, code coverage charts and a simple badge on your README that says this branch is green or red. Every small win cuts time from commit to confidence.

Tools are half the story. The rest is team habit. Decide what your branches mean and wire Jenkins to enforce that promise. If you use the popular Git Flow model, build every feature branch on push and smoke test it with fast checks. Protect your long lived branches with status checks so merges only happen when Jenkins says green. If you prefer short lived branches or trunk first, set the bar even higher and keep a steady stream of tiny commits. Small batch size keeps your pipeline clear and your rollbacks simple. Treat the pipeline config like code. Store your job definitions, flow scripts and seed jobs in Git, review changes like any pull request and tag them with the same release number as your app. Keep builds fast so people do not dodge them. Split long suites and run them in parallel on a matrix job across multiple JVMs or OS flavors. Watch flakiness like a hawk. A flaky test is a tax you pay every day, so either fix it or push it out of the gate and track it with intent. Lock environments. If staging drifts from production, your pipeline is fiction. Bake base images, version your Chef cookbooks or Puppet manifests and make rollbacks boring. Back up Jenkins itself. The thinBackup plugin and a nightly database dump to off site storage can save a weekend. Think about where your master lives this week. With storms moving up the coast and power companies warning about outages, a plan to move builds to another region or to spin on EC2 could be the difference between a missed launch and a calm Monday. Keep the team in the loop without interrupting them. Jenkins can post to Campfire or IRC so status flows into the room where decisions are made. Train the habit that a broken pipeline is a team problem, not a build engineer problem. When your culture and your Jenkins jobs say the same thing, releases stop being drama and start being rhythm.

Your Jenkins pipeline is your team’s promise turned into buttons and logs, so make it honest and make it calm.

Development Practices Engineering Management Software Engineering

Post navigation

Previous post
Next post
  • Digital Experience (94)
    • Experience Strategy (19)
    • Experience-Driven Commerce (5)
    • Multi-Channel Experience (9)
    • Personalization & Targeting (21)
    • SEO & Performance (10)
  • Marketing Technologies (92)
    • Analytics & Measurement (14)
    • Content Management Systems (45)
    • Customer Data Platforms (4)
    • Digital Asset Management (8)
    • Marketing Automation (6)
    • MarTech Stack & Strategy (10)
    • Technology Buying & ROI (3)
  • Software Engineering (310)
    • Business of Software (20)
    • Code (30)
    • Development Practices (52)
    • Digital Transformation (21)
    • Engineering Management (25)
    • General Software (82)
    • Productivity & Workflow (30)
    • Software Architecture (85)
    • Technical Implementation (23)
  • 2025 (12)
  • 2024 (8)
  • 2023 (18)
  • 2022 (13)
  • 2021 (3)
  • 2020 (8)
  • 2019 (8)
  • 2018 (23)
  • 2017 (17)
  • 2016 (40)
  • 2015 (37)
  • 2014 (25)
  • 2013 (28)
  • 2012 (24)
  • 2011 (30)
  • 2010 (42)
  • 2009 (25)
  • 2008 (13)
  • 2007 (33)
  • 2006 (26)

Ab Testing Adobe Adobe Analytics Adobe Target AEM agile-methodologies Analytics architecture-patterns CDP CMS coding-practices content-marketing Content Supply Chain Conversion Optimization Core Web Vitals customer-education Customer Data Platform Customer Experience Customer Journey DAM Data Layer Data Unification documentation DXP Individualization java Martech metrics mobile-development Mobile First Multichannel Omnichannel Personalization product-strategy project-management Responsive Design Search Engine Optimization Segmentation seo spring Targeting Tracking user-experience User Journey web-development

©2025 CMO & CTO | WordPress Theme by SuperbThemes