Digger home pagelight logodark logo
  • diggerhq/digger
  • diggerhq/digger
  • Documentation
  • Slack
  • Blog
  • Introduction
    • About Digger
    • How it works
    • Pricing
    • FAQ
    • Feedback
    Getting Started
    • Github Actions + AWS
    • Github Actions + GCP
    Features
    • Plan preview
    • CommentOps
    • Dashboard
    • OPA policies
    • Concurrency
    • PR-level locks
    • Plan Persistence
    • RBAC
    How To
    • Apply on Merge
    • Auto-merge
    • Backendless mode
    • Commenting strategies
    • Custom commands
    • Destroy via manual workflow
    • Disable auto-checkout
    • Drift Detection
    • Generate projects
    • Include / exclude patterns
    • Multiple AWS accounts
    • Policy overrides
    • Project Level Roles for AWS
    • Segregate cloud accounts
    • Trigger workflow directly
    • Using Checkov
    • Using Infracost
    • Using OPA (Conftest)
    • Using Terragrunt
    • Specifying version
    Self-host Digger
    • Auth methods
    • Deploy as docker image
    • Deploy using docker-compose
    • Deploy as a binary
    Reference
    • digger.yml
    • Action inputs
    Digger Enterprise
    • Setting up Digger EE
    Digger API
    • RBAC via OPA guide
    AWS-specific
    • Setting up DynamoDB Access for locks
    • Setting up separate mgmt account
    • Authenticating with OIDC on AWS
    GCP-specific
    • Setting up GCP + GH Actions
    • Federated OIDC access
    • Store plans in a Bucket
    Azure-specific
    • Setting up Azure + GH Actions
    • Azure devops locking connection methods
    Troubleshooting Errors
    • Importing existing resources
    Features

    PR-level locks

    • For every pull request we perform a lock when the pull request is opened and unlocked when the pull request is merged, this is to avoid making a plan preview stale

    • For GCP locking is performed using buckets that are strongly consistent: https://github.com/diggerhq/digger/blob/80289922227f225d887feb74749b4daef8b441f8/pkg/gcp/gcp_lock.go#L13

    • These options are configured and the locking can be disabled entirely if it is not needed

    • The locking interface is very simple and is based on Lock() and Unlock() Operations https://github.com/s1ntaxe770r/digger/blob/5815775095d7380281c71c7c3aa63ca1b374365f/pkg/locking/locking.go#L40

    • A pull request aquires a lock for every project impacted by this PR and all dependant projects

    ConcurrencyPlan Persistence
    slacklinkedin
    Powered by Mintlify