Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Az Azure Pipelines linuxos, macOS és Windows rendszerű gépeken futtathat folyamatokat. Ha platformfüggetlen fejlesztési technológiákat, például .NET Core-t, Node.jsvagy Pythont használ, ezek a platformfüggetlen buildelési képességek előnyöket és kihívásokat is jelentenek. A legtöbb folyamat például egy vagy több szkriptet tartalmaz a buildelési folyamat során, de a szkriptszintaxis gyakran különbözik a platformoktól.
Ez a cikk bemutatja, hogyan használhat platformfüggetlen szkripteket a különböző buildplatformok támogatásához. Egy Azure Pipelines-lépéssel script megkönnyítheti a platformfüggetlen szkriptek írását.
Feltételeket is használhat a szkriptek meghatározott platformokra való célzásához.
Szkript lépés
A szkript kulcsszó a parancssori feladat gyorsbillentyűje, amely Linux és macOS rendszeren a Bash-t, illetve Windows rendszeren a cmd.exe-t futtatja.
A script segítségével könnyedén átadhatóak argumentumok egy platformfüggetlen eszköznek. A script lépés az egyes platformok natív szkript-értelmezőjében, a MacOS-en és Linuxon futó Bashben vagy a Windows cmd.exe fut. Az alábbi példa egy script lépéssel hívja meg a npm-et argumentumokkal.
steps:
- script: |
npm install
npm test
Környezeti változók
A parancssor, a PowerShell és a Bash eltérően oldja fel a környezeti változókat . A rendszer által biztosított értékek, például a PATH eléréséhez platformonként eltérő szintaxist kell használnia.
Az Azure Pipelines makrószintaxissal többplatformos módon hivatkozik a futtatókörnyezet változóira. A makrószintaxissal rendelkező változók feldolgozása a feladat futásideje során történő végrehajtása előtt történik. A változó kiterjed, mielőtt a platform shell találkozik vele.
Ha makrószintaxist szeretne használni egy folyamatban, vegye körül a változó nevét az alábbiak szerint: $(<variable name>). Az alábbi platformfüggetlen példaszkript a folyamat azonosítóját tükrözi.
steps:
- script: echo This is pipeline $(System.DefinitionId)
Ez a szintaxis a folyamaton belül definiált változók esetében is működik.
variables:
Example: 'myValue'
steps:
- script: echo The value passed in is $(Example)
Bash-feladat
Ha összetettebb szkriptekre van szüksége, fontolja meg az írásukat a Bashben, és használja a Bash-feladatot a folyamatban. A legtöbb macOS- és Linux-ügynök a Basht használja rendszerhéjként, a Windows-ügynökök pedig a Git Basht vagy a Linux Bash Windows alrendszerét . A Microsoft által üzemeltetett ügynökök alapértelmezés szerint előre telepítették a Basht.
Az alábbi példa egy Bash-feladatot futtat, amely segít eldönteni, hogy aktiválja-e a buildet.
trigger:
batch: true
branches:
include:
- main
steps:
- bash: |
echo "Hello world from $AGENT_NAME running on $AGENT_OS"
case $BUILD_REASON in
"Manual") echo "$BUILD_REQUESTEDFOR manually queued the build." ;;
"IndividualCI") echo "This is a CI build for $BUILD_REQUESTEDFOR." ;;
"BatchedCI") echo "This is a batched CI build for $BUILD_REQUESTEDFOR." ;;
*) $BUILD_REASON ;;
esac
displayName: Hello world
Megjegyzés:
A PowerShell szkriptekhez is használható. A pwsh parancsikon MacOS, Linux vagy Windows rendszeren futtatja a PowerShell 7.x-et. Az ügynököknek telepítve kell lenniük a PowerShell 7.x-nek.
A Microsoft által üzemeltetett ügynökök alapértelmezés szerint telepítették a PowerShell 7.x-et.
Platformalapú váltás
A folyamatlogika duplikálására szolgáló platformspecifikus szkriptek további munkát és nagyobb hibakockázatot okoznak. Ha azonban nem tudja elkerülni a platformspecifikus szkriptelést, feltételekkel észlelheti, hogy melyik platformon van.
Például a buildügynök IP-címének lekéréséhez a macOS rendszerben ifconfig, Ubuntu Linuxon ip addr, és a Windows PowerShellben a Get-NetIPAddress parancsmagot kell használnia. Az alábbi folyamat ezeket az információkat különböző platformokon lévő ügynököktől szerzi be feltételek használatával.
steps:
# Linux
- bash: |
export IPADDR=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
echo "##vso[task.setvariable variable=IP_ADDR]$IPADDR"
condition: eq( variables['Agent.OS'], 'Linux' )
displayName: Get IP on Linux
# macOS
- bash: |
export IPADDR=$(ifconfig | grep 'en0' -A3 | grep inet | tail -n1 | awk '{print $2}')
echo "##vso[task.setvariable variable=IP_ADDR]$IPADDR"
condition: eq( variables['Agent.OS'], 'Darwin' )
displayName: Get IP on macOS
# Windows
- powershell: |
Set-Variable -Name IPADDR -Value ((Get-NetIPAddress | ?{ $_.AddressFamily -eq "IPv4" -and !($_.IPAddress -match "169") -and !($_.IPaddress -match "127") } | Select-Object -First 1).IPAddress)
Write-Host "##vso[task.setvariable variable=IP_ADDR]$IPADDR"
condition: eq( variables['Agent.OS'], 'Windows_NT' )
displayName: Get IP on Windows
# use the value
- script: |
echo The IP address is $(IP_ADDR)