Folyamatösszetevők közzététele és letöltése

Azure DevOps Services

Az Azure Pipelines használatával összetevőket tölthet le a folyamat korábbi szakaszaiból vagy egy másik folyamatból. Az összetevőt közzéteheti egy fájlmegosztáson, vagy elérhetővé teheti folyamatösszetevőként.

Összetevők közzététele

Az összetevőket a YAML, a klasszikus szerkesztő vagy az Azure CLI használatával teheti közzé:

Megjegyzés

A kiadási folyamatok nem támogatják a folyamatösszetevők közzétételét.

steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
  artifact: WebApp

Megjegyzés

A publish kulcsszó a Folyamatösszetevő közzététele tevékenység parancsikonja.

Bár az összetevő neve nem kötelező, ajánlott olyan nevet megadni, amely pontosan tükrözi az összetevő tartalmát. Ha egy másik operációs rendszeren futó feladatból szeretné használni az összetevőt, győződjön meg arról, hogy az összes fájlelérési út érvényes a célkörnyezetre. Például egy karaktert \ tartalmazó fájlnév, vagy * nem tölthető le Windows rendszeren.

A közzétenni kívánt fájl/mappa elérési útja kötelező. Ez lehet abszolút vagy relatív elérési út.$(System.DefaultWorkingDirectory)

Az Azure Artifacts csomagjai nem módosíthatók. A csomag közzététele után annak verziója véglegesen le lesz foglalva. A sikertelen feladatok újrafuttatása sikertelen lesz, ha a csomagot közzétették. Ezt akkor érdemes megközelíteni, ha úgy szeretné újrafuttetni a sikertelen feladatokat, hogy már létezik hibacsomag, a Feltételek használatával csak akkor futhat, ha az előző feladat sikeres volt.

  jobs:
  - job: Job1
    steps:
      - script: echo Hello Job1!

  - job: Job2
    steps:
      - script: echo Hello Job2!
    dependsOn: Job1

Megjegyzés

A folyamatösszetevők tárolásáért nem kell fizetnie. A folyamat gyorsítótárazása szintén mentesül a tárterület számlázása alól. Tekintse meg , hogy mely összetevők számítanak bele a teljes számlázott tárterületbe.

Figyelemfelhívás

A folyamatfuttatás törlése a futtatáshoz társított összes összetevő törlését eredményezi.

A .artifactignore használata

.artifactignore uses a similar syntax to .gitignore (with few limitations) to specify which files should be ignored when publishing artifacts. További részletekért lásd: .artifactignore fájl használata .

Megjegyzés

A pluszjel karakter + nem támogatott az URL-útvonalakban, és egyes buildelési metaadatok olyan csomagtípusokhoz, mint a Maven.

Példa: az összes fájl figyelmen kívül hagyása .exe fájlok kivételével:

**/*
!*.exe

Fontos

Az Azure Artifacts automatikusan figyelmen kívül hagyja a .git mappa elérési útját, ha nem rendelkezik .artifactignore fájllal. Ezt megkerülheti egy üres .artifactignore fájl létrehozásával.

Összetevők letöltése

Az összetevőket a YAML, a klasszikus szerkesztő vagy az Azure CLI használatával töltheti le.

steps:
- download: current
  artifact: WebApp
  • current: az aktuális folyamatfuttatás által létrehozott összetevők letöltése. Beállítások: aktuális, adott.

Megjegyzés

A közzétett összetevők listája csak a következő függő feladatokban érhető el. Ezért csak olyan különálló feladatokban használja current a beállítást, amelyek függnek a közzétételi összetevő-tevékenységekkel rendelkező feladatoktól.

Tipp

A Pipeline-erőforrások használatával egy helyen definiálhatja a forrást, és bárhol használhatja a folyamatban.

Megjegyzés

A download kulcsszó a Folyamatösszetevő letöltése feladat parancsikonja.

Alapértelmezés szerint a fájlok a $(Pipeline.Workspace)-be lesznek letöltve. Ha nincs megadva összetevőnév, minden letöltött összetevőhöz létrejön egy alkönyvtár. Az egyező minták segítségével korlátozhatja, hogy mely fájlok töltődnek le. További részletekért tekintse meg a fájlegyeztetési mintákat .

steps:
- download: current
  artifact: WebApp
  patterns: |
    **/*.js
    **/*.zip

Összetevők kijelölése

Egy letöltési lépés egy vagy több összetevőt is letölthet. Több összetevő letöltéséhez hagyja üresen az összetevő neve mezőt, és használjon fájlegyeztetési mintákat a letöltendő fájlok korlátozásához. ** A az alapértelmezett fájlegyeztetési minta (az összes összetevő összes fájlja).

Egyetlen összetevő

Összetevőnév megadásakor:

  1. A rendszer csak az adott összetevő fájljait tölti le. Ha az összetevő nem létezik, a feladat sikertelen lesz.

  2. A fájlegyeztetési minták kiértékelése az összetevő gyökeréhez képest történik. A minta *.jar például egyezik az összes fájllal, amelynek .jar kiterjesztése az összetevő gyökerénél található.

Az alábbi példa bemutatja, hogyan tölthet le mindent *.js egy összetevőből WebApp:

steps:
- download: current
  artifact: WebApp
  patterns: '**/*.js'

Több összetevő

Ha nincs megadva összetevőnév:

  1. Több összetevő is letölthető, és a feladat nem hiúsul meg, ha nem találhatók fájlok.

  2. Minden összetevőhöz létrejön egy alkönyvtár.

  3. A fájlegyeztetési minták feltételezik, hogy a minta első szegmense egy összetevőnév (vagy egyezés). Például az WebApp/** összetevő összes fájljának WebApp megfelel. A minta */*.dll megegyezik az egyes összetevők gyökerénél található kiterjesztésű fájlokkal .dll .

Az alábbi példa bemutatja, hogyan töltheti le az összes .zip fájlt az összes összetevőből:

steps:
- download: current
  patterns: '**/*.zip'

Kiadási és üzembehelyezési feladatok összetevői

Az összetevők csak az üzembehelyezési feladatokban töltődnek le automatikusan. Alapértelmezés szerint a rendszer letölti az összetevőket a következőbe System.ArtifactsDirectory: . A letöltési összetevő feladat csak akkor lesz automatikusan injektálva, ha az deploy életciklus-horogot használja az üzemelő példányban. Ha meg szeretné akadályozni az összetevők automatikus letöltését, adjon hozzá egy download lépést, és állítsa az értékét egyikre sem. Egy normál buildelési feladatban explicit módon kell használnia a download lépés kulcsszót vagy a Folyamatösszetevő letöltése feladatot. A többi horogtípusról további információt az életciklus-horgok című témakörben talál.

steps:
- download: none

Összetevők használata szakaszok között

Ha a folyamat különböző szakaszaiban szeretné elérni az összetevőt, közzéteheti az összetevőt egy fázisban, majd letöltheti azt a következő fázisban a függőségek kihasználásával. További részleteket a függőségek szakaszában talál.

Példa

Az alábbi példában egy szkriptmappát másolunk ki és teszünk közzé az adattárból a $(Build.ArtifactStagingDirectory). A második szakaszban letöltjük és futtatjuk a szkriptet.

trigger:
- main
stages:
- stage: build
  jobs:
  - job: run_build
    pool:
      vmImage: 'windows-latest'
    steps:
    - task: VSBuild@1
      inputs:
        solution: '**/*.sln'
        msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
        platform: 'Any CPU'
        configuration: 'Release'

    - task: CopyFiles@2
      displayName: 'Copy scripts'
      inputs:
        contents: 'scripts/**'
        targetFolder: '$(Build.ArtifactStagingDirectory)'

    - publish: '$(Build.ArtifactStagingDirectory)/scripts'
      displayName: 'Publish script'
      artifact: drop

- stage: test
  dependsOn: build
  jobs:
  - job: run_test
    pool:
      vmImage: 'windows-latest'
    steps:
    - download: current
      artifact: drop
    - task: PowerShell@2
      inputs:
        filePath: '$(Pipeline.Workspace)\drop\test.ps1'

A PowerShell-feladat kimenetét bemutató képernyőkép

Migrálás buildösszetevőkből

A folyamatösszetevők a buildösszetevők következő generációja, és az összetevőkkel való munka ajánlott módja. A Buildösszetevők közzététele feladattal közzétett összetevők továbbra is letölthetők az Összeállítási összetevők letöltése funkcióval, de azt javasoljuk, hogy inkább a legújabb folyamatösszetevő-letöltési feladatot használja.

Buildösszetevőkről folyamatösszetevőkre való migráláskor:

  1. Alapértelmezés szerint a Folyamatösszetevő letöltése feladat fájlokat tölt le.$(Pipeline.Workspace) Ez az alapértelmezett és ajánlott elérési út az összes összetevőtípushoz.

  2. A buildösszetevők letöltése feladat fájlegyeztetési mintái várhatóan az összetevő nevével kezdődnek (vagy megegyeznek), függetlenül attól, hogy adott összetevő van-e megadva vagy sem. A Folyamatösszetevő letöltése feladatban a minták nem tartalmazhatják az összetevő nevét, ha egy összetevő neve már meg van adva. További információkért tekintse meg az egyetlen összetevő kiválasztását.

Példa

- task: PublishPipelineArtifact@1
  displayName: 'Publish'
  inputs:
    targetPath: $(Build.ArtifactStagingDirectory)/**
    ${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
        artifactName: 'prod'
    ${{ else }}:
        artifactName: 'dev'
    artifactType: 'pipeline'

GYIK

K: Mik azok a buildösszetevők?

Válasz: A buildösszetevők a build által létrehozott fájlok. A buildösszetevők közzétételéről és felhasználásáról további információt a Build Artifacts című témakörben talál.

K: Támogatja az összetevők megosztott mappában való közzétételét?

Válasz: Jelenleg nem, de ez a funkció tervezett.

K: Törölhetek folyamatösszetevőket sikertelen feladatok újrafuttatásakor?

Válasz: A folyamatösszetevők nem törölhetők vagy felülírhatók. Ha egy sikertelen feladat újrafuttatásakor újra létre szeretné hozni az összetevőket, a feladatazonosítót belefoglalhatja az összetevő nevére. $(system.JobId) A a megfelelő változó ehhez a célra. Az előre definiált változókkal kapcsolatos további információkért tekintse meg a rendszerváltozókat.