Skip to content
Latchkey

How to Lock a Resource for Concurrency in Jenkins

The lock step queues builds so only one holds a named resource at a time.

Wrap the critical stage in a lock so concurrent builds wait their turn for a shared environment. The Lockable Resources plugin tracks the named lock across the controller.

Serialize a staging deploy

Lock a named resource around the deploy and smoke-test steps.

Jenkinsfile
pipeline {
  agent any
  stages {
    stage('Deploy to staging') {
      steps {
        lock(resource: 'staging-env') {
          sh './deploy.sh staging'
          sh './smoke-test.sh staging'
        }
      }
    }
  }
}

Notes

  • Other builds reaching the same lock wait until the holder releases it, preventing clobbered deploys.
  • Use a label and quantity for pools of interchangeable resources instead of a single named lock.

Frequently asked questions

How do I lock a Resource for Concurrency in Jenkins?
Wrap the critical stage in a lock so concurrent builds wait their turn for a shared environment. The Lockable Resources plugin tracks the named lock across the controller.
Serialize a staging deploy?
Lock a named resource around the deploy and smoke-test steps.

Related guides

References

Run this faster and cheaper on Latchkey managed runners - self-healing included. Start free → 30-day trial · No credit card