Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Tento článek je krok-za-krokem průvodce běžnými způsoby přizpůsobení pipeline.
Požadavky
Postupujte podle pokynů v části Vytvoření prvního kanálu a vytvořte pracovní kanál.
azure-pipelines.yml Vysvětlení souboru
Potrubí je definováno pomocí souboru YAML v úložišti. Obvykle se tento soubor jmenuje azure-pipelines.yml a nachází se v kořenovém adresáři vašeho úložiště.
Přejděte na stránku Pipelines v Azure Pipelines , vyberte kanál, který jste vytvořili, a v místní nabídce kanálu vyberte Upravit a otevřete editor YAML.
Poznámka:
Pokyny k zobrazení a správě kanálů na portálu Azure DevOps najdete v tématu Zobrazení a správa kanálů.
Prozkoumejte obsah souboru YAML.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
Poznámka:
Obsah souboru YAML se může lišit v závislosti na ukázkovém úložišti, se kterým jste začali, nebo upgrady provedené v Azure Pipelines.
Pipeline se spustí vždy, když váš tým odešle změnu do hlavní větve úložiště nebo vytvoří pull request. Běží na počítači s Linuxem hostovaným Microsoftem. Proces potrubí má jediný krok, kterým je spuštění úlohy Maven.
Změna platformy, na které se má stavět
Projekt můžete sestavit na agentech hostovaných Microsoftem, kteří už obsahují sady SDK a nástroje pro různé vývojové jazyky. Nebo můžete používat agenty v místním prostředí s konkrétními nástroji, které potřebujete.
Přejděte do editoru kanálu výběrem akce Upravit kanál v buildu nebo výběrem možnosti Upravit na hlavní stránce kanálu.
V současné době potrubí běží na agentovi Linuxu.
pool: vmImage: "ubuntu-latest"Pokud chcete přepnout na jinou platformu, jako je Windows nebo Mac, změňte
vmImagehodnotu:pool: vmImage: "windows-latest"pool: vmImage: "macos-latest"Vyberte Uložit a poté potvrďte změny, abyste mohli sledovat spuštění pipeline na jiné platformě.
Přidání kroků
Do své sestavy můžete přidat další skripty nebo úlohy jako kroky. Úkol je předem zabalený skript. Úlohy můžete použít k vytváření, testování, publikování nebo nasazení aplikace. Pro úlohy ve Maven, které jsme použili pro testování a publikování výsledků v jazyce Java, můžete rovněž použít úlohu k publikování výsledků pokrytí kódu.
Otevřete editor YAML pro váš kanál.
Na konec souboru YAML přidejte následující fragment kódu.
- task: PublishCodeCoverageResults@2 inputs: summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/site/jacoco/jacoco.xml" # Path to summary files reportDirectory: "$(System.DefaultWorkingDirectory)/**/site/jacoco" # Path to report directory failIfCoverageEmpty: true # Fail if code coverage results are missingVyberte Uložit a potvrďte změny.
Výsledky testů a pokrytí kódu můžete zobrazit tak, že přejdete na své sestavení a vyberete karty Test a Pokrytí.
Vytváření na více platformách
Projekt můžete sestavit a otestovat na více platformách. Jedním ze způsobů, jak to udělat, je s strategy a matrix. Proměnné můžete použít k pohodlnému vložení dat do různých částí kanálu. V tomto příkladu použijeme proměnnou k předání názvu obrázku, který chceme použít.
V souboru
azure-pipelines.ymlnahraďte tento obsah:pool: vmImage: "ubuntu-latest"s následujícím obsahem:
strategy: matrix: linux: imageName: "ubuntu-latest" mac: imageName: "macOS-latest" windows: imageName: "windows-latest" maxParallel: 3 pool: vmImage: $(imageName)Vyberte Uložit a potvrďte změny, abyste viděli, že vaše sestavení může běžet až tři úlohy na třech různých platformách.
Každý agent může spustit pouze jednu úlohu najednou. Pokud chcete paralelně spustit více úloh, musíte nakonfigurovat více agentů. Potřebujete také dostatek paralelních úloh.
Sestavení s použitím více verzí
Pokud chcete vytvořit projekt pomocí různých verzí tohoto jazyka, můžete použít matrix verze a proměnnou. V tomto kroku můžete buď vytvořit projekt Java se dvěma různými verzemi Javy na jedné platformě, nebo spustit různé verze Javy na různých platformách.
Poznámka:
V kontextu nelze použít strategy vícekrát.
Pokud chcete vytvářet pro jednu platformu a více verzí, přidejte do
azure-pipelines.ymlsouboru následující matici před úlohu Maven a zavmImage.strategy: matrix: jdk10: jdkVersion: "1.10" jdk11: jdkVersion: "1.11" maxParallel: 2Potom tento řádek nahraďte v úkolu Maven:
jdkVersionOption: "1.11"tímto řádkem:
jdkVersionOption: $(jdkVersion)Nezapomeňte proměnnou
$(imageName)změnit zpět na platformu podle vašeho výběru.Pokud chcete vytvořit více platforem a verzí, nahraďte celý obsah v
azure-pipelines.ymlsouboru před úlohou publikování následujícím fragmentem kódu:trigger: - main strategy: matrix: jdk10_linux: imageName: "ubuntu-latest" jdkVersion: "1.10" jdk11_windows: imageName: "windows-latest" jdkVersion: "1.11" maxParallel: 2 pool: vmImage: $(imageName) steps: - task: Maven@4 inputs: mavenPomFile: "pom.xml" mavenOptions: "-Xmx3072m" javaHomeOption: "JDKVersion" jdkVersionOption: $(jdkVersion) jdkArchitectureOption: "x64" publishJUnitResults: true testResultsFiles: "**/TEST-*.xml" goals: "package"Vyberte Uložit a potvrďte změny, abyste viděli, že sestavení spouští dvě úlohy na dvou různých platformách a sadách SDK.
Přizpůsobení spouštěčů CI
Spouštěče pipeline způsobují její spuštění. Můžete použít trigger: k tomu, aby se pipeline spustila při každém odeslání aktualizace do větve. YAML kanály jsou výchozím způsobem nakonfigurované se spouštěčem CI ve vaší výchozí větvi (která je obvykle main). Můžete nastavit spouštěče pro konkrétní větve nebo pro ověření pull requestu. V případě spouštění ověřování u žádosti o přijetí změn stačí nahradit krok trigger: krokem pr:, jak je znázorněno ve dvou příkladech níže. Ve výchozím nastavení se pipeline spouští pro každou změnu žádosti o sloučení.
Pokud chcete nastavit triggery, přidejte na začátek
azure-pipelines.ymlsouboru některý z následujících fragmentů kódu.trigger: - main - releases/*pr: - main - releases/*Můžete zadat úplný název větve (například
main) nebo zástupný znak odpovídající předponě (napříkladreleases/*).
Nastavení potrubí
Nastavení kanálu můžete zobrazit a nakonfigurovat v nabídce Další akce
na stránce podrobností kanálu.
- Správa zabezpečení - Správa zabezpečení
-
Přejmenování nebo přesunutí – Upravte název kanálu a umístění složky.
- Stavový odznak - Přidat stavový odznak do úložiště
- Odstranit – Odstraní potrubí včetně všech sestavení a přidružených artefaktů.
- Naplánovaná spuštění - Zobrazení naplánovaných spuštění
Zvolte Nastavení a nakonfigurujte následující nastavení kanálu.
V podokně Nastavení procesu můžete nakonfigurovat následující nastavení.
Zpracování nových žádostí o spuštění – někdy budete chtít zabránit zahájení nových spuštění ve vašem potrubí.
- Ve výchozím nastavení je zpracování nových žádostí o spuštění povoleno. Toto nastavení umožňuje standardní zpracování všech typů triggerů, včetně ručních spuštění.
- Pozastavené pipeline umožňují zpracování požadavků na spuštění, ale tyto požadavky jsou zařazeny do fronty bez skutečného spuštění. Pokud je povoleno nové zpracování požadavků, zpracování pokračuje počínaje prvním požadavkem ve frontě.
- Zakázané pipeliny brání uživatelům ve spouštění nových běhů. Při použití tohoto nastavení jsou také zakázány všechny triggery. U všech zásad sestavení, které používají zakázaný kanál, se vedle zásady sestavení v okně přehledu žádosti o přijetí změn zobrazí zpráva "Nelze zařadit sestavení do fronty" a stav zásady sestavení bude označen jako chybný.
Cesta k souboru YAML – Pokud někdy potřebujete nasměrovat kanál tak, aby používal jiný soubor YAML, můžete zadat cestu k danému souboru. Toto nastavení může být užitečné také v případě, že potřebujete přesunout nebo přejmenovat soubor YAML.
Automaticky propojit pracovní položky zahrnuté v tomto spuštění – změny spojené s daným spuštěním kanálu můžou mít přidružené pracovní položky. Tuto možnost vyberte, pokud chcete tyto pracovní položky propojit s tímto spuštěním. Pokud je vybrána možnost Automaticky propojit pracovní položky zahrnuté v tomto spuštění , musíte zadat konkrétní větev nebo
*pro všechny větve, což je výchozí hodnota. Pokud zadáte větev, pracovní položky jsou přidruženy pouze ke spuštěním této větve. Pokud zadáte*, pracovní položky se přidruží pro všechny spuštění.
- Pokud chcete dostávat oznámení, když vaše spuštění selže, viz jak spravovat oznámení pro tým.
Správa zabezpečení
Zabezpečení kanálů můžete nakonfigurovat na úrovni projektu z části Další akce
na cílové stránce kanálů a na úrovni kanálu na stránce podrobností kanálu.
Pokud chcete podporovat zabezpečení operací kanálu, můžete přidat uživatele do předdefinované skupiny zabezpečení, nastavit jednotlivá oprávnění pro uživatele nebo skupinu nebo přidat uživatele k předdefinovaným rolím. Zabezpečení služby Azure Pipelines můžete spravovat na webovém portálu, a to buď z kontextu uživatele nebo správce. Další informace o konfiguraci zabezpečení kanálů najdete v tématu Oprávnění kanálu a role zabezpečení.
Vytvořit pracovní položku při selhání
Kanály YAML nemají nastavení Vytvořit pracovní položku při selhání, jaké mají klasické build kanály. Klasické kanály sestavení jsou jednostupňové a vytvoření pracovního úkolu při selhání se vztahuje na celý kanál. Kanály YAML můžou být vícefázové a nastavení na úrovni kanálu nemusí být vhodné. Pokud chcete implementovat vytvoření pracovní položky při selhání v kanálu YAML, můžete použít metody, jako jsou pracovní položky – vytvoření volání rozhraní REST API nebo azure DevOps CLI az boards work-item create příkaz v požadovaném bodě v kanálu.
Následující příklad obsahuje dvě úlohy. První úloha představuje práci kanálu, ale pokud selže, spustí se druhá úloha a vytvoří chybu ve stejném projektu jako kanál.
# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
displayName: Succeed or fail
type: boolean
default: false
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Work
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
# This malformed command causes the job to fail
# Only run this command if the succeed variable is set to false
- script: git clone malformed input
condition: eq(${{ parameters.succeed }}, false)
# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
dependsOn: Work
condition: failed()
steps:
- bash: |
az boards work-item create \
--title "Build $(build.buildNumber) failed" \
--type bug \
--org $(System.TeamFoundationCollectionUri) \
--project $(System.TeamProject)
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: 'Create work item on failure'
Poznámka:
Azure Boards umožňuje nakonfigurovat sledování pracovních položek pomocí několika různých procesů, jako je agilní nebo základní. Každý proces má různé typy pracovních položek, a ne každý typ pracovní položky je v každém procesu dostupný. Seznam typů pracovních položek podporovaných jednotlivými procesy najdete v tématu Typy pracovních položek (WIT).
Předchozí příklad konfiguruje pomocí parametrů modulu runtime, zdali potrubí uspěje nebo selže. Při ručním spuštění kanálu můžete nastavit hodnotu parametru succeed . Druhý script krok v první úloze kanálu vyhodnotí succeed parametr a spustí se pouze tehdy, je-li succeed nastaven na false.
Druhá úloha v procesu závisí na první úloze a spustí se pouze pokud první úloha selže. Druhá úloha používá příkaz Azure DevOps CLI az boards work-item create k vytvoření chyby. Další informace o spouštění příkazů Azure DevOps CLI z kanálu najdete v tématu Spouštění příkazů v kanálu YAML.
Kanály YAML nemají nastavení Vytvořit pracovní položku při selhání, jaké mají klasické build kanály. Klasické kanály sestavení jsou jednostupňové a vytvoření pracovního úkolu při selhání se vztahuje na celý kanál. Kanály YAML můžou být vícefázové a nastavení na úrovni kanálu nemusí být vhodné. Pokud chcete implementovat vytvoření pracovní položky při selhání v kanálu YAML, můžete použít pracovní položky – vytvořit volání rozhraní REST API v požadovaném bodě v kanálu.
Následující příklad obsahuje dvě úlohy. První úloha představuje práci kanálu, ale pokud selže, spustí se druhá úloha a vytvoří chybu ve stejném projektu jako kanál.
# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
displayName: Succeed or fail
type: boolean
default: false
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Work
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
# This malformed command causes the job to fail
# Only run this command if the succeed variable is set to false
- script: git clone malformed input
condition: eq(${{ parameters.succeed }}, false)
# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
dependsOn: Work
condition: failed()
steps:
- bash: |
curl \
-X POST \
-H 'Authorization: Basic $(System.AccessToken)' \
-H 'Content-Type: application/json-patch+json' \
-d '[
{
"op": "add",
"path": "/fields/System.Title",
"from": null,
"value": "git clone failed"
}
]' \
"$(System.CollectionUri)$(System.TeamProject)/_apis//wit/workitems/$Bug?api-version=7.1-preview.3
"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
displayName: 'Create work item on failure'
Poznámka:
Azure Boards umožňuje nakonfigurovat sledování pracovních položek pomocí několika různých procesů, jako je agilní nebo základní. Každý proces má různé typy pracovních položek, a ne každý typ pracovní položky je v každém procesu dostupný. Seznam typů pracovních položek podporovaných jednotlivými procesy najdete v tématu Typy pracovních položek (WIT).
Předchozí příklad konfiguruje pomocí parametrů modulu runtime, zdali potrubí uspěje nebo selže. Při ručním spuštění kanálu můžete nastavit hodnotu parametru succeed . Druhý script krok v první úloze kanálu vyhodnotí succeed parametr a spustí se pouze tehdy, je-li succeed nastaven na false.
Druhá úloha v procesu závisí na první úloze a spustí se pouze pokud první úloha selže. Druhá úloha používá rozhraní Azure DevOps API a příkaz az boards work-item create k vytvoření chyby.
Tento příklad používá dvě úlohy, ale stejný přístup je možné použít ve více fázích.
Poznámka:
Můžete také použít rozšíření tržiště, jako je Vytvoření chyby při selhání vydání, které podporuje vícefázové kanály YAML.
Další kroky
Naučili jste se základy přizpůsobení pipeline. V dalším kroku doporučujeme získat další informace o přizpůsobení kanálu pro jazyk, který používáte:
Aby se váš kanál CI rozšířil na kanál CI/CD, zahrňte nasazovací úlohu s kroky pro nasazení aplikace do prostředí.
Chcete-li se dozvědět více o tématech v této příručce, podívejte se na Práce, Úkoly, Katalog úkolů, Proměnné, Spouštěče nebo Řešení problémů.
Další informace o tom, co dalšího můžete dělat v kanálech YAML, najdete v referenčních informacích ke schématu YAML.