CD - ako releasovat viacero appiek z jedneho repozitara

Ahojte,
zisla by sa mi rada ohladom CD v Azure Devops.

Mam repozitar, ktory buildujem a releasujem v Azure Pipelines do test, staging a production prostredi.

V repozitari su dve webove aplikacie, ktore ale zdielaju velku cast kodu. Jedna je interna a druha je WebAPI pre externych zakaznikov.

V produkcnom prostredi by som ale chcel mat moznost nasadzovat tieto aplikacie osobitne, aby som zbytocne nedaval dole obe aplikacie, ak sa releasuje iba jedna.

Rozmyslam ako na to:

  1. Osobitny release pipeline pre kazdu appku?
  2. Release premenna (Settable at release time), ktora by urcovala, ktore applikacie sa maju deploynut?
  3. Osobitny stage pre kazdu appku a kazdy environment?

Tu je ťažko posúdiť zo zadania. Ak sú tie dve aplikácie “nezávislé”, tak by som šiel do osobitných pipelines. Ak sú závislé, tak asi nechceš mať dve verzie, ktoré dávajú nekonzistentné výsledky, ale to už sa asi dostávame do nejakého kubernetes scenára, kde výsledkom CD by mali byť nejake docker images, ktoré sa súčasne nasadia.

su nezavisle v zmysle, ze jedna nepotrebuje druhu

chyba mi pr informacii ako napr ci je spolocny test a staging ale budem predpokladat ze ano

Osobne by som to robil ale ako multistage pipeline kde tie posledne stages (deploy pipelines by boli dve - deploy-internal a deploy-production/deploy by boli zavisle na staging co ti da moznost ich spustit paralelne. Do environment si potom iba nahod approvals a mas to poriesene. Plus pre tieto stages sprav templates a nebude ta bude stvat repetitivny yaml :slightly_smiling_face:

Alebo ako vlko spominal mal dve separatne deploy pipelines (zalozene na tom istom yaml.
build-pipeline.yaml bude vyrabat artefakty a publish-pipeline.yaml (zavisla na artefaktoch z build) ich bude konzumovat.

Nerozumiem otazke

Aj tu som sa stratil. V jednej vete hovoris o jednej multistage pipeline aj potom o dvoch deploy pipelines

Nerozumiem otazke

test a staging stages su spolocne pre obe “produkcie”?

Aj tu som sa stratil. V jednej vete hovoris o jednej multistage pipeline aj potom o dvoch deploy pipelines

Zle som sa vyjadril, myslel som to takto

Osobne by som to robil ale ako multistage pipeline kde tie posledne stages (stage by boli dve - deploy-internal a deploy-production/deploy by boli zavisle na staging stage co ti da moznost ich spustit paralelne

pipeline pseudo tu

Do toho zakombinuješ approvals a môžeš approvovať každý stage zvlášť.

prakticky to vyzerá potom cca takto (tu je jeden build stage a 3 “deploy” stages)
image