Megosztás a következőn keresztül:


Git-parancsok futtatása folyamatszkriptekben

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

A Git-parancsok a Microsoft által üzemeltetett és saját üzemeltetésű ügynökökkel készült munkafolyamatokhoz érhetők el. Ha például egy szolgáltatáságon befejeződik egy folyamatos integrációs (CI) build, egyesítheti az ágat a főágra. Ez a cikk bemutatja, hogyan futtathat Git-parancsokat az Azure Pipelines buildszkriptjeiben.

Szkriptek engedélyezése Git-parancsok futtatásához

Győződjön meg arról, hogy a GitHub az Azure DevOps-fiók alapértelmezett identitását használja. Ha szükséges, állítsa be a GitHub-felhasználót a kivétel utáni első lépésként.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Engedélyek megadása a buildelési szolgáltatáshoz

A projekt buildelési szolgáltatásának engedéllyel kell rendelkeznie a forrásadattárba való íráshoz. Állítsa be a szükséges engedélyeket az alábbiak szerint:

  1. A projekt Projektbeállítások területén válassza az Adattáraklehetőséget.

  2. A Minden adattár lapon válassza a Biztonság lehetőséget a projekt összes adattárának engedélyeinek beállításához. Vagy válassza ki azt az adattárat, amelyen Git-parancsokat szeretne futtatni, majd válassza a Biztonság lehetőséget az adattár oldalán.

    Sreenshot, amely az adattárak biztonságának kiválasztását mutatja.

  3. A Felhasználói engedélyek lapon válassza ki a Build Service identitást. Ügyeljen arra, hogy a < területen válassza ki >a Build Service (<szervezet>) projektnevet, nem pedig a Project Collection Build Service-fiókokat. Alapértelmezés szerint ez az identitás beolvasható az adattárból, de nem tudja leküldni a módosításokat.

  4. Legördülő listából válassza az Engedélyezés lehetőséget a futtatni kívánt Git-parancsokhoz szükséges összes engedély mellett, általában ág létrehozása, Közreműködés, Olvasás és Létrehozás címkével.

    Képernyőkép az adattárak identitásengedélyeinek megadásáról.

A szkriptek hozzáférésének engedélyezése a rendszerjogkivonathoz

Annak engedélyezése, hogy a szkriptek hozzáférjenek a GitHub OAuth-jogkivonathoz:

Adjon hozzá egy checkout lépést a YAML-folyamathoz a következő beállítással persistCredentialstrue: .

steps:
- checkout: self
  persistCredentials: true

A lépésről további információt a checkout definícióban steps.checkout talál.

A helyi adattár tisztítása

A buildelési folyamat nem törli automatikusan a helyi adattár bizonyos módosításait, például a helyi ágak törlését vagy a helyi git config módosítások visszavonását. Ha problémákba ütközik egy saját üzemeltetésű ügynökkel, a build futtatása előtt törölheti az adattárat.

Általánosságban elmondható, hogy a saját üzemeltetésű ügynökök gyorsabb teljesítménye érdekében ne tisztítsa meg az adattárat. A tisztítás nem hatékony a Microsoft által üzemeltetett ügynökök számára, mert minden alkalommal új ügynököt használnak. További információ: Az ügynök helyi adattárának törlése.

Az adattár megtisztítása a build futtatása előtt:

Állítsa be clean a truecheckout lépésben. Ez a beállítás a beolvasás előtt fut git clean -ffdxgit reset --hard HEAD .

steps:
- checkout: self
  clean: true

Válassza ki a változókat a folyamatszerkesztőben, hozza létre vagy módosítsa a változót Build.Clean , és állítsa az értékét a következőre source: .

Példák Git-parancsokra

Az alábbi példák Git-parancsokat futtatnak egy parancssori feladatban és egy Batch-szkriptfeladatban .

Az adattárban lévő fájlok listázása

A Git-adattárban lévő fájlok listázásához használja egy YAML-folyamat parancssori feladatát az alábbiak szerint:

- task: CmdLine@2
  inputs:
    script: 'git ls-files'

Funkcióág egyesítése a főágra

A következő klasszikus folyamat példája egyesíti a CI-buildeket, main ha a build sikeres.

  1. Hozzon létre egy merge.bat nevű fájlt az adattár gyökerénél a következő tartalommal:

    @echo off
    ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
    IF %BUILD_SOURCEBRANCH% == refs/heads/main (
       ECHO Building main branch so no merge is needed.
       EXIT
    )
    SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
    ECHO GIT CHECKOUT MAIN
    git checkout main
    ECHO GIT STATUS
    git status
    ECHO GIT MERGE
    git merge %sourceBranch% -m "Merge to main"
    ECHO GIT STATUS
    git status
    ECHO GIT PUSH
    git push origin
    ECHO GIT STATUS
    git status
    
  2. A klasszikus folyamat Eseményindítók lapján jelölje be a jelölőnégyzetet a folyamatos integráció engedélyezéséhez.

  3. Az Elágazási szűrők és az Elérési út szűrők területen válassza ki azokat az ágakat és elérési utakat, hogy belefoglalják vagy kizárják a buildből.

  4. Adjon hozzá egy Batch-szkriptet a folyamat utolsó feladataként.

  5. A feladatkonfiguráció Elérési útja területén adja meg a merge.bat fájl helyét és nevét.

GYIK

Futtathatok Git-parancsokat, ha a távoli adattár a GitHubon vagy egy másik Git-szolgáltatásban, például a Bitbucket Cloudban található?

Igen, akkor futtathat Git-parancsokat, ha a távoli adattár a GitHubon vagy egy másik Git-szolgáltatásban, például a Bitbucket Cloudban található.

Milyen feladatokkal futtathatok Git-parancsokat?

A Git-parancsok futtatásához az alábbi Azure Pipelines-feladatokat használhatja:

Hogyan kerülhetem el a CI-buildek aktiválását a szkript leküldésekor?

Annak érdekében, hogy a szkript leküldésekor ne aktiváljon CI-buildet, adja hozzá [skip ci] a véglegesítési üzenethez vagy a leíráshoz. Például:

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

Az alábbi változatok bármelyikét használhatja az Azure Repos Git, a Bitbucket Cloud, a GitHub vagy a GitHub Enterprise Server véglegesítéséhez:

  • [skip ci] vagy [ci skip]
  • skip-checks: true vagy skip-checks:true
  • [skip azurepipelines] vagy [azurepipelines skip]
  • [skip azpipelines] vagy [azpipelines skip]
  • [skip azp] vagy [azp skip]
  • ***NO_CI***

Szükségem van egy ügynökre a folyamatok futtatásához?

Igen, legalább egy ügynökre van szüksége a buildelési vagy kiadási folyamat futtatásához.

Hogyan háríthatom el a problémákat?

Lásd a folyamatfuttatások hibaelhárítását.

Hogyan javíthatom ki, hogy nem tudok alapértelmezett ügynökkészletet kiválasztani vagy várólistára tenni a folyamatfuttatást?

Lásd: Ügynökkészletek létrehozása és kezelése.

Hogyan javíthatom ki a NuGet leküldéses feladatom sikertelen voltát a "Hiba: nem lehet helyi kiállítói tanúsítványt lekérni"?

Ezt a problémát egy megbízható főtanúsítvány hozzáadásával háríthatja el. Adja hozzá a környezeti változót a NODE_EXTRA_CA_CERTS=file buildügynökhöz, vagy adja hozzá a NODE.EXTRA.CA.CERTS=file feladatváltozót a folyamathoz.

A változóról további információt a Node.js dokumentációjában NODE_EXTRA_CA_CERTS =fájlban talál. A folyamat változóinak beállításával kapcsolatos utasításokért tekintse meg a folyamat változóinak beállítása című témakört.

Miért nem látom ezeket a funkciókat a helyszíni Azure DevOps Serveren?

Ezen funkciók némelyike csak az Azure DevOps Services szolgáltatásban érhető el, és nem érhető el a helyszíni Azure DevOps Serverhez. Egyes funkciók csak az Azure DevOps Server legújabb verziójában érhetők el.