Skip to content

Cum să folosești resursa Pool în Concourse CI

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să folosești resursa Pool în Concourse CI. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.

Resursa pool în Concourse CI oferă mecanisme de lock pentru a serializa accesul la resurse partajate, precum baze de date, medii de deploy sau API-uri externe.

Configurarea de bază

resources:
  - name: deploy-lock
    type: pool
    source:
      uri: https://github.com/dodatech/pools.git
      branch: main
      pool: environments

Preluarea și eliberarea unui lock

jobs:
  - name: deploy-staging
    plan:
      - put: deploy-lock
        params:
          acquire: true
      - task: deploy
        config:
          platform: linux
          image_resource:
            type: registry-image
            source: { repository: alpine }
          run:
            path: sh
            args:
              - -c
              - |
                echo "Deploy pe staging..."
                sleep 30
                echo "Deploy finalizat"
      - put: deploy-lock
        params:
          release: deploy-lock

Output așteptat:

Acquiring lock: environments/staging
Lock acquired
Deploy pe staging...
Deploy finalizat
Releasing lock: environments/staging

Pool cu medii multiple

resources:
  - name: prod-blue
    type: pool
    source:
      uri: https://github.com/dodatech/pools.git
      branch: main
      pool: production
      add: [blue]

  - name: prod-green
    type: pool
    source:
      uri: https://github.com/dodatech/pools.git
      branch: main
      pool: production
      add: [green]

Verificare status pool

Poți verifica care resurse sunt ocupate sau libere folosind claimed și unclaimed:

jobs:
  - name: check-available
    plan:
      - get: prod-blue
        version: every
      - task: list-available
        config:
          platform: linux
          ...

Prevenire

  • Eliberează întotdeauna lock-urile în put final
  • Folosește pool-uri diferite pentru medii diferite (staging, producție)
  • Implementează timeout pentru lock-uri pentru a preveni blocajele
  • Verifică starea pool-ului înainte de a încerca acquire

Greșeli comune

  1. Lock-uri neeliberate -- blochează alte job-uri; folosește ensure în plan
  2. Pool-uri insuficiente -- toate job-urile așteaptă un lock care nu se eliberează
  3. Confuzie între acquire și release -- verify order în planul pipeline-ului
Cât timp poate un job să dețină un lock?

Lock-ul este valabil pe durata execuției job-ului. La finalizare sau eșec, lock-ul se eliberează automat.

Pot folosi pool pentru blue-green deployment?

Da, acesta este cazul clasic de utilizare. Fiecare culoare (blue/green) este o resursă separată în pool.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech's deployment pipelines rely on pool resources for zero-downtime releases.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro