Přizpůsobení kanálu
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Toto je podrobný průvodce běžnými způsoby přizpůsobení kanálu.
Požadavek
Postupujte podle pokynů v části Vytvoření prvního kanálu a vytvořte pracovní kanál.
azure-pipelines.yml
Vysvětlení souboru
Kanál se definuje 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 zvolte Upravit a otevřete editor YAML kanálu.
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.
Tento kanál se spustí vždy, když váš tým odešle změnu do hlavní větve úložiště nebo vytvoří žádost o přijetí změn. Běží na počítači s Linuxem hostovaným Microsoftem. Proces kanálu má jeden 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ě kanál běží na agentu Linuxu:
pool: vmImage: "ubuntu-latest"
Pokud chcete zvolit jinou platformu, jako je Windows nebo Mac, změňte
vmImage
hodnotu:pool: vmImage: "windows-latest"
pool: vmImage: "macos-latest"
Vyberte Uložit a potvrďte změny, abyste viděli spuštění kanálu na jiné platformě.
Přidání kroků
Do kanálu můžete přidat další skripty nebo úlohy . Úkol je předem zabalený skript. Úlohy můžete použít k vytváření, testování, publikování nebo nasazení aplikace. V Javě používá úloha Mavenu, kterou jsme použili k testování a publikování výsledků, ale můžete také 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@1 inputs: codeCoverageTool: "JaCoCo" summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/site/jacoco/jacoco.xml" reportDirectory: "$(System.DefaultWorkingDirectory)/**/site/jacoco" failIfCoverageEmpty: true
Vyberte Uložit a potvrďte změny.
Výsledky pokrytí testů a kódu můžete zobrazit tak, že vyberete sestavení a přejdete na karty Test a Pokrytí .
Sestavování napříč několika platformami
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 nahraďte
azure-pipelines.yml
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 sestavení běží až tři úlohy na třech různých platformách.
Každý agent může současně spustit pouze jednu úlohu. 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 vytvořit na jedné platformě a více verzích, přidejte do
azure-pipelines.yml
souboru následující matici před úlohu Maven a zavmImage
.strategy: matrix: jdk10: jdkVersion: "1.10" jdk11: jdkVersion: "1.11" maxParallel: 2
Potom 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.yml
souboru 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í triggerů CI
Triggery kanálu způsobují spuštění kanálu. Kanál můžete použít trigger:
k tomu, aby se spustil při každém nasdílení aktualizace do větve. Kanály YAML jsou ve výchozím nastavení nakonfigurované s triggerem CI ve vaší výchozí větvi (což je obvykle main
). Můžete nastavit triggery pro konkrétní větve nebo pro ověření žádosti o přijetí změn. V případě triggeru ověření žádosti o přijetí změn stačí krok nahradit trigger:
následujícím pr:
dvěma příklady. Ve výchozím nastavení se kanál spouští pro každou změnu žádosti o přijetí změn.
Pokud chcete nastavit triggery, přidejte na začátek
azure-pipelines.yml
souboru 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í kanálu
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.
- Odznáček Stav Přidat stavový odznáček - do úložiště
- Odstranit – Odstraní kanál včetně všech sestavení a přidružených artefaktů.
- Zobrazení naplánovaných spuštění -
Zvolte Nastavení a nakonfigurujte následující nastavení kanálu.
V podokně Nastavení kanálu můžete nakonfigurovat následující nastavení.
Zpracování nových žádostí o spuštění – někdy budete chtít zabránit spuštění nových spuštění ve vašem kanálu.
- 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é kanály umožňují zpracování spuštěných požadavků, ale tyto požadavky se zařadí do fronty bez skutečného spuštění. Pokud je povolené nové zpracování požadavků, spuštění zpracování pokračuje od prvního požadavku ve frontě.
- Zakázané kanály brání uživatelům ve spouštění nových spuštění. Při použití tohoto nastavení jsou také zakázány všechny triggery. U všech zásad sestavení používajících zakázaný kanál se vedle zásad sestavení v okně s přehledem žádosti o přijetí změn zobrazí zpráva Nejde za frontu sestavit a stav zásady sestavení se přeruší.
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 se 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 se přidružují jenom ke spuštěním této větve. Pokud zadáte, pracovní položky se přidružují*
ke všem spuštěním.- Pokud chcete dostávat oznámení, když vaše spuštění selže, podívejte se , 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ření pracovní položky při selhání
Kanály YAML nemají pracovní položku Vytvořit pro nastavení selhání , jako jsou klasické kanály buildu. Klasické kanály buildu jsou jedna fáze a vytvoření pracovní položky 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 pomocí parametrů modulu runtime konfiguruje, jestli je kanál úspěšný nebo neúspěšný. 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 v době, kdy succeed
je nastavená hodnota false.
Druhá úloha v kanálu má závislost na první úloze a spustí se pouze v případě, že první úloha selže. Druhá úloha pomocí azure DevOps CLI az boards work-item create příkaz k vytvoření chyby. Další informace o spouštění příkazů Rozhraní příkazového řádku Azure DevOps z kanálu najdete v tématu Spouštění příkazů v kanálu YAML.
Kanály YAML nemají pracovní položku Vytvořit pro nastavení selhání , jako jsou klasické kanály buildu. Klasické kanály buildu jsou jedna fáze a vytvoření pracovní položky 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 pomocí parametrů modulu runtime konfiguruje, jestli je kanál úspěšný nebo neúspěšný. 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 v době, kdy succeed
je nastavená hodnota false.
Druhá úloha v kanálu má závislost na první úloze a spustí se pouze v případě, že první úloha selže. Druhá úloha používá k vytvoření chyby příkaz az boards work-item create rozhraní AZURE DevOps API.
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í marketplace, jako je vytvoření chyby při selhání vydané verze, která podporuje kanály YAML s více fázemi.
Další kroky
Naučili jste se základy přizpůsobení kanálu. V dalším kroku doporučujeme získat další informace o přizpůsobení kanálu pro jazyk, který používáte:
Nebo pokud chcete rozšířit kanál CI na kanál CI/CD, zahrňte úlohu nasazení s kroky pro nasazení aplikace do prostředí.
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.