На одну сторінку
CI/CD з GitHub Actions: шпаргалка
Те, що варто тримати під рукою. Якщо рядок незрозумілий, повернись у відповідний урок курсу.
Відкрити курс: CI/CD з GitHub ActionsАнатомія workflow
| Що | Як |
|---|---|
| Де лежить | .github/workflows/*.yml |
| Тригери | on: [push, pull_request, workflow_dispatch] |
| Машина для job | runs-on: ubuntu-latest |
| Порядок jobs | needs: build |
| Готовий action | uses: actions/checkout@v4 |
| Shell-команда | run: npm test |
| Умова | if: github.ref == 'refs/heads/main' |
Швидкий CI
| Що | Як |
|---|---|
| Кеш npm або pnpm | setup-node with: cache: pnpm |
| Встановлення з lock | pnpm install --frozen-lockfile |
| Матриця | strategy: matrix: node: [22, 24] |
| Не скасовувати матрицю | fail-fast: false |
| Скасувати старий запуск PR | concurrency: cancel-in-progress: true |
Секрети і права
| Що | Як |
|---|---|
| Секрет | ${{ secrets.NAME }} |
| Змінна | ${{ vars.NAME }} |
| Мінімальні права | permissions: contents: read |
| OIDC | permissions: id-token: write |
| Approve перед продом | environment: production |
Деплой і релізи
| Що | Як |
|---|---|
| Передати файли | upload-artifact / download-artifact |
| Передати значення | needs.build.outputs.version |
| Деплої по черзі | concurrency: group: deploy-prod |
| Reusable workflow | on: workflow_call |
| Composite action | runs: using: composite |
| Pinning | uses: org/action@<full-sha> # v3 |