Git-parancsok futtatása folyamatszkriptekben

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

A Git-parancsok Microsoft által üzemeltetett és önállóan üzemeltetett-ügynökök buildelési munkafolyamataihoz érhetők el. Ha például egy funkcióágon befejeződik egy folyamatos integrációs (CI) build, összevonhatja az ágat a main ággal. Ez a cikk azt ismerteti, hogyan futtathat Git-parancsokat Azure Pipelines buildelési szkriptekben.

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

Győződjön meg arról, hogy a Git a Azure DevOps-fiók alapértelmezett identitását használja. Ha szükséges, állítsa be a Git-felhasználót a checkout 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 project Project Beállítások területén válassza a Repositories lehetőséget a Repos területen.

  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. Mindenképpen válassza ki a <projekt nevét> Build Service (<organization>) a Felhasználók területen, nem a Projekt gyűjtemény Build Service fiókok-at. 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 minden szükséges engedély mellett a futtatni kívánt Git-parancsokhoz, általában Ág létrehozása, Közreműködés, Olvasás és Címke létrehozása.

    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

Ha engedélyezni szeretné, 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

További információért a checkout lépésről lásd a steps.checkout definíciót.

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 Microsoft által üzemeltetett ügynökök esetében, 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 true a checkout lépésben. Ez a beállítás a beolvasás előtt futtatja a git clean -ffdx-t, majd a git reset --hard HEAD-t.

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 csővezeték példája egy CI-buildet egyesít 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áram GitHub vagy egy másik Git-szolgáltatásban, például a Bitbucket Cloudban van?

Igen, akkor futtathat Git-parancsokat, ha a távoli adattár GitHub 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, hogy a szkript leküldésekor a CI build folyamata elinduljon?

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 a commitokhoz az Azure Repos Git, a Bitbucket Cloud, a GitHub vagy a GitHub Enterprise Server szolgáltatásba:

  • [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 feltöltési feladatom sikertelenségét, amikor a "Hiba: nem sikerült lekérni a helyi kibocsátó tanúsítványát" üzenet jelenik meg?

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

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átok néhány ilyen funkciót a helyszínen telepített Azure DevOps Serverben?

Az alábbi funkciók némelyike csak a Azure DevOps Szolgáltatások esetében érhető el, és nem érhető el a helyszíni Azure DevOps Server esetében. Egyes funkciók csak a Azure DevOps Server legújabb verziójában érhetők el.