Eseményindítók használata a folyamat futásának szabályozásához

Befejeződött

Most már rendelkezik egy munkafolyamatpal, amely üzembe helyezi a Bicep-fájlt az Azure-környezetben. A fájl módosításakor azonban manuálisan kell futtatnia a folyamatot. Ebben a leckében megtudhatja, hogyan aktiválhatja a folyamatot automatikusan futtatásra, amikor a Bicep-kód megváltozik.

Megjegyzés:

Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.

Mi az a folyamatindító?

A folyamat-eseményindítók olyan feltételek, amelyek teljesülése esetén automatikusan futtatja a folyamatot a létrehozott szabályok alapján. Beállíthatja, hogy az eseményindítók ütemezett időközönként fussanak a folyamaton. Az eseményindítókat úgy is beállíthatja, hogy minden alkalommal futtassa a folyamatot, amikor egy fájl megváltozik az adattárban. A második lehetőséget is választhatja, mert érdemes minden teszt és üzembe helyezési lépést futtatni, amikor valaki módosítja a kódot.

Ha nem használ automatikus eseményindítót, előfordulhat, hogy valaki módosít egy Bicep-fájlt, és véglegesíti, majd leküldi az adattárba. Ha azonban elfelejtik futtatni a folyamatot, akkor különbség lesz a Bicep-fájlban lévő erőforrásdefiníciók és az Azure-környezetben üzembe helyezett erőforrások között. Tegyük fel, hogy még néhány véglegesítés és leküldés történik, de nincs üzembe helyezve. Ha valaki hibát vagy helytelen konfigurációt vezet be a Bicep-fájlban az egyik ilyen módosításban, előfordulhat, hogy nehéz lesz nyomon követni a hibát a később üzembe helyezett több véglegesítés között. Egy idő után nem fogja megbízni abban, hogy a Bicep-kód valóban az infrastruktúrát képviseli, és az értéke erodált.

Amikor beállítja, hogy a folyamat minden alkalommal fusson, amikor frissíti a fájlokat, a módosítások leküldésének pillanatában a folyamat elindul. Azonnali visszajelzést kap a módosítás érvényességéről, és biztos lehet abban, hogy az éles környezet mindig naprakész.

Elágazási eseményindítók

Az eseményindítók gyakori típusa egy ág-eseményindító, más néven folyamatos integrációs eseményindító vagy CI-eseményindító. Amikor ág-eseményindítót használ, minden alkalommal, amikor módosít egy adott ágat, a folyamat fut. Ha egy másik ágra véglegesíti és leküldi a módosítást, a folyamat nem aktiválódik, és nem fut. Az ilyen típusú eseményindítók általában az alapértelmezett vagy ágon használhatók a következő kóddal:

trigger:
- main

Eseményindító, ha több ág is megváltozik

Az eseményindítók beállíthatók úgy, hogy a folyamat egy adott ágon vagy ágkészleten fusson. Tegyük fel például, hogy olyan kiadási ágakat hoz létre, amelyek tartalmazzák a projekt egy adott kiadásához üzembe helyezhető kódot. Használhat ágneveket, például release/v1, release/v2 stb. A folyamatot akkor szeretné futtatni, amikor a kód a névkiadással kezdődő ágon módosul. A tulajdonságot helyettesítő karakterrel * is használhatjainclude:

trigger:
  branches:
    include:
    - main
    - release/*

Bizonyos ágakat is kizárhat. Tegyük fel, hogy csapattagokkal dolgozik együtt a projektben. Munkatársai funkcióágakat hoznak létre, hogy kipróbálhassák ötleteiket a Bicep-fájlokban. Minden szolgáltatásághoz tartoznak olyan nevek, mint a feature/add-database, a feature/improve-performance stb. A folyamatot minden ágon automatikusan futtatni szeretné, kivéve a munkatársai által létrehozott szolgáltatáságakat. A tulajdonság használatával exclude győződjön meg arról, hogy a folyamat nem aktiválódik automatikusan a funkcióágak módosításakor:

trigger:
  branches:
    include:
    - '*'
    exclude:
    - feature/*

Tipp.

Figyelje meg az idézőjeleket a helyettesítő karakter körül a include szűrőben. A YAML-fájlformátumhoz egyetlen * karaktert kell idézőjelek közé foglalni, amikor helyettesítő karakterként használja.

Elérésiút-szűrők

Előfordulhat, hogy az adattárban olyan fájlok találhatók, amelyek nem kapcsolódnak az üzembe helyezéshez. Előfordulhat például, hogy van egy üzembehelyezési mappa az adattárban, amely tartalmazza a Bicep-kódot és egy külön dokumentummappát , amely tartalmazza a dokumentációs fájlokat. A folyamatot akkor szeretné aktiválni, ha bárki módosítja az üzembehelyezési mappában lévő Bicep-fájlokat, de nem szeretné aktiválni a folyamatot, ha valaki csak egy dokumentációs fájlt módosít. Ha egy eseményindítót úgy szeretne beállítani, hogy reagáljon az adattár egy adott mappájában lévő változásokra, használhat egy elérésiút-szűrőt:

trigger:
  branches:
    include:
    - main
  paths:
    exclude:
    - docs
    include:
    - deploy

Ha valaki olyan módosítást hajt végre, amely csak egy dokumentációs fájlt frissít, a folyamat nem fut. Ha azonban valaki módosít egy Bicep-fájlt, vagy ha a dokumentációs fájlon kívül módosít egy Bicep-fájlt is, az eseményindító futtatja a folyamatot.

A folyamat automatikus futtatásának ütemezése

A folyamatot a megadott ütemezés szerint futtathatja, fájlmódosításra nem reagálva. Futtathatja például a Bicep-kód éjszakai kiadását, vagy minden reggel automatikusan üzembe helyezhet egy tesztkörnyezetet. Használja a schedules kulcsszót triggera helyett, és állítsa be a gyakoriságot egy cron kifejezéssel:

schedules:
- cron: "0 0 * * *"
  displayName: Daily environment restore
  branches:
    include:
    - main

Megjegyzés:

A cron kifejezés egy speciálisan formázott karaktersorozat, amely meghatározza, hogy milyen gyakran fordul elő esemény. Ebben a példában azt jelenti, 0 0 * * * hogy minden nap éjfélkor (UTC) fut.

Azt is beállíthatja, hogy az adattár ága az ütemezett eseményben legyen használva. Amikor a folyamat elindul, a kód legújabb verzióját használja az ütemezésben megadott ágból.

Több eseményindító használata

Az eseményindítókat és az ütemezéseket az alábbi példához hasonlóan kombinálhatja:

trigger:
- main

schedules:
- cron: "0 0 * * *"
  displayName: Deploy test environment
  branches:
    include:
    - main

Amikor egy ág-eseményindítót és egy ütemezett eseményindítót hoz létre ugyanabban a folyamatban, a folyamat minden alkalommal lefut, amikor egy fájl módosul az eseményindítóban beállított ágon és a beállított ütemezésen. Ebben a példában a folyamat minden nap éjfélkor (UTC) fut, és minden alkalommal, amikor a rendszer módosítást küld a főágba .

Tipp.

Az egyes folyamatokhoz ajánlott eseményindítókat beállítani. Ha nem állít be eseményindítókat, a folyamat alapértelmezés szerint automatikusan fut, amikor bármilyen fájl megváltozik bármelyik ágon, ami gyakran nem az, amit szeretne.

Egyidejűség-vezérlés

Az Azure Pipelines alapértelmezés szerint lehetővé teszi a folyamat több példányának egyidejű futtatását. Ez akkor fordulhat elő, ha rövid időn belül több véglegesítést hajt végre egy ágon.

Bizonyos esetekben a folyamat több egyidejű futtatása nem jelent problémát. Ha azonban üzembehelyezési folyamatokkal dolgozik, kihívást jelenthet annak biztosítása, hogy a folyamatfuttatások ne felülírják az Azure-erőforrásokat vagy a konfigurációt olyan módon, ahogyan azt ön elvárja.

A problémák elkerülése érdekében használhatja a batch kulcsszót egy eseményindítóval, például az alábbi példában:

trigger:
  batch: true
  branches:
    include:
    - main

Amikor az eseményindító aktiválódik, az Azure Pipelines gondoskodik arról, hogy megvárja az aktív folyamatok futtatásának befejezését. Ezután elindít egy új futtatási elemet az összes módosítással, amely az utolsó futtatás óta halmozódott fel.