Munkafolyamatok gyorsítótárazása, megosztása és hibakeresése

Befejezett

Ebben az egységben megtudhatja, hogyan optimalizálhatja a teljesítményt, hogyan továbbíthat adatokat a feladatok között, és hogyan oldhatja meg a munkafolyamatok hibáit naplók és tokenek használatával.

Ennek a folyamatnak a végrehajtásához megtanulhatja, hogyan:

  • Gyorsítótár-függőségek a gyorsabb munkafolyamatok érdekében.
  • Artefaktumadatok átadása feladatok között.
  • Hibakeresési naplózás engedélyezése munkafolyamatokhoz.
  • Munkafolyamat-naplók elérése a GitHub felhasználói felületéről és a REST API-ból.
  • A GitHub-alkalmazás hitelesítéséhez használjon telepítési jogkivonatokat.

Gyorsítótár-függőségek a gyorsítótárművelettel

Munkafolyamat létrehozásakor gyakran újra kell használnia ugyanazokat a kimeneteket, vagy le kell töltenie a függőségeket egyik futtatásról a másikra. Ahelyett, hogy újra és újra letölti ezeket a függőségeket, gyorsítótárazhatja őket, hogy a munkafolyamat gyorsabban és hatékonyabban fusson. A gyorsítótár használata csökkenti a munkafolyamat bizonyos lépéseinek futtatásához szükséges időt, mivel a GitHub által üzemeltetett futók feladatai minden egyes alkalommal tiszta virtuális környezetben kezdődnek.

A feladatok függőségeinek gyorsítótárazásához használja a GitHub műveletét cache . Ez a művelet lekéri a megadott egyedi kulccsal azonosított gyorsítótárat. Amikor a művelet megkeresi a gyorsítótárat, lekéri a gyorsítótárazott fájlokat a konfigurált elérési útra. A cache művelet használatához be kell állítania néhány konkrét paramétert:

Paraméter Leírás Kötelező
Key A gyorsítótár mentésekor és keresésekor létrehozott kulcsazonosítóra hivatkozik. Igen
Path A gyorsítótárazáshoz vagy kereséshez a futó fájlútvonalára hivatkozik. Igen
Restore-keys Alternatív meglévő kulcsokat tartalmaz a gyorsítótárazáshoz, ha a kívánt gyorsítótárkulcs nem található. Nem
steps:
  - uses: actions/checkout@v2

  - name: Cache NPM dependencies
    uses: actions/cache@v2
    with:
      path: ~/.npm
      key: ${{ runner.os }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
      restore-keys: |
        ${{ runner.os }}-npm-cache-

Az előző példában a rendszer a path futó operációs rendszerét és ~/.npm a fájl SHA-256 kivonatát állítja key be package-lock.json és tartalmazza. A kulcs előtagolása azonosítóval (npm-cache ebben a példában) akkor hasznos, ha tartalékot restore-keys használ, és több gyorsítótárral rendelkezik.

Összetevők adatainak átadása feladatok között

A munkafolyamaton belüli függőségek gyorsítótárazásának gondolatához hasonlóan adatokat továbbíthat a munkafolyamaton belüli feladatok között. Az adatokat a upload-artifact és download-artifact műveletek használatával továbbíthatja. Az előző feladat összetevőitől függő feladatoknak várniuk kell, amíg az előző feladat sikeresen befejeződik, mielőtt futtathatók lennének. Ez a módszer akkor hasznos, ha egy korábbi feladatból feltöltött összetevők alapján sorozatosan kell futtatnia a feladatokat. Ehhez például job_2 a job_1 szintaxist kell needs: job_1 használni.

name: Share data between jobs
on: push
jobs:
  job_1:
    name: Upload File
    runs-on: ubuntu-latest
    steps:
      - run: echo "Hello World" > file.txt
      - uses: actions/upload-artifact@v2
        with:
          name: file
          path: file.txt

  job_2:
    name: Download File
    runs-on: ubuntu-latest
    needs: job_1
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: file
      - run: cat file.txt

Ebben a példában két feladat van. job_1 szöveget ír a file.txt fájlba. Ezután a művelet segítségével feltölti ezt az actions/upload-artifact@v2 összetevőt, és a munkafolyamaton belül későbbi használatra tárolja az adatokat. job_2a szintaxis használatával job_1 kell needs: job_1 elvégezni. Ezután a actions/download-artifact@v2 művelet segítségével letölti az összetevőt, majd kinyomtatja file.txtannak tartalmát.

Lépéskeresési naplózás engedélyezése munkafolyamatban

Bizonyos esetekben az alapértelmezett munkafolyamat-naplók nem nyújtanak elég részletes információt ahhoz, hogy diagnosztizálhassa, miért hiúsul meg egy adott munkafolyamat futtatása, feladata vagy lépése. Ezekben a forgatókönyvekben több hibakeresési naplózást engedélyezhet két lehetőséghez: futtatásokhoz és lépésekhez. Engedélyezze ezt a diagnosztikai naplózást két olyan adattárkulcs beállításával, amelyekhez hozzá kell admin férni az adattárhoz true.

  • A diagnosztikai naplózás futtatásának engedélyezéséhez állítsa be a ACTIONS_RUNNER_DEBUG munkafolyamatot tartalmazó adattár titkos kódját true.
  • A lépésdiagnosztikai naplózás engedélyezéséhez állítsa be a ACTIONS_STEP_DEBUG munkafolyamatot tartalmazó adattár titkos kódját true.

A munkafolyamat-naplók elérése a GitHubon

Ha a sikeres automatizálásra gondol, arra törekszik, hogy a lehető legkevesebb időt töltse az automatizált műveletek áttekintésével, hogy a releváns dolgokra összpontosíthasson. De néha a dolgok nem a tervek szerint alakulnak, és át kell tekintenie, hogy mi történt. Ez a hibakeresési folyamat bosszantó lehet.

A GitHub világos, strukturált elrendezéssel rendelkezik, amellyel gyorsan mozoghat a feladatok között, miközben megtartja az aktuális hibakeresési lépés kontextusát.

A GitHubon futó munkafolyamat naplóinak megtekintése:

  1. Az adattárban lépjen a Műveletek lapra .
  2. A bal oldali panelen válassza ki a munkafolyamatot.
  3. A munkafolyamat-futtatások listájában válassza ki a futtatás lehetőséget.
  4. A Feladatok csoportban válassza ki a feladatot.
  5. Olvassa el a napló kimenetét.

Ha egy munkafolyamaton belül több futtatás is van, a munkafolyamat kiválasztása után kiválaszthatja az Állapotszűrőt , és beállíthatja a Sikertelen értékre, hogy csak a munkafolyamat sikertelen futtatásai jelenjenek meg.

A munkafolyamat-naplók elérése a REST API-ból

A Naplók GitHubon keresztüli megtekintése mellett a GitHub REST API-val megtekintheti a munkafolyamat-futtatások naplóit, újrafuttathatja a munkafolyamatokat, vagy akár megszakíthatja a munkafolyamat-futtatásokat. Ha meg szeretné tekinteni egy munkafolyamat-futtatás naplóját az API használatával, küldjön egy kérést GET a naplók végpontjára. Ne feledje, hogy ezt a végpontot bárki használhatja, aki olvasási hozzáféréssel rendelkezik az adattárhoz. Ha az adattár privát, akkor a hatókörrel rendelkező hozzáférési jogkivonatot repo kell használnia.

Egy adott munkafolyamat-futtatási napló megtekintésére irányuló kérés például GET az alábbi elérési utat követi:

GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs

Annak azonosítása, hogy mikor érdemes telepítési jogkivonatot használni egy GitHub-alkalmazásból

Ha a GitHub-alkalmazást telepítik egy fiókra, az alkalmazást telepítésként hitelesítheti a REST- és GraphQL API-kérésekhez való installation access token használatával. Ez a lépés lehetővé teszi az alkalmazás számára a telepítés tulajdonában lévő erőforrások elérését, feltéve, hogy az alkalmazás megkapta a szükséges adattár-hozzáférést és engedélyeket. Az alkalmazástelepítés által küldött REST- vagy GraphQL API-kérések az alkalmazáshoz vannak rendelve.

Az alábbi példában a telepítési hozzáférési jogkivonatot kell lecserélni INSTALLATION_ACCESS_TOKEN :

curl --request GET \
--url "https://api.github.com/meta" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer INSTALLATION_ACCESS_TOKEN" \
--header "X-GitHub-Api-Version: 2022-11-28"

A HTTP-alapú Git-hozzáférés hitelesítéséhez telepítési hozzáférési jogkivonatot is használhat. Az alkalmazásnak rendelkeznie kell az Contents adattár engedélyével. Ezután a telepítési hozzáférési jogkivonatot használhatja HTTP-jelszóként.

A példában cserélje le a TOKEN elemet a telepítési hozzáférési jogkivonatra.

git clone https://x-access-token:TOKEN@github.com/owner/repo.git