Munkafolyamatok gyorsítótárazása, megosztása és hibakeresése
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_DEBUGmunkafolyamatot tartalmazó adattár titkos kódjáttrue. - A lépésdiagnosztikai naplózás engedélyezéséhez állítsa be a
ACTIONS_STEP_DEBUGmunkafolyamatot tartalmazó adattár titkos kódjáttrue.
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:
- Az adattárban lépjen a Műveletek lapra .
- A bal oldali panelen válassza ki a munkafolyamatot.
- A munkafolyamat-futtatások listájában válassza ki a futtatás lehetőséget.
- A Feladatok csoportban válassza ki a feladatot.
- 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