ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ GitVerse

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ β€” это Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС систСмы Π²ΠΎ врСмя выполнСния workflow. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, статусов, ΠΈΠΌΡ‘Π½ Π²Π΅Ρ‚ΠΎΠΊ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, событий ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ β€” это встроСнная структура Π΄Π°Π½Π½Ρ‹Ρ…, доступная Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС workflow. Она позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ:

  • Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Π²Π΅Ρ‚ΠΊΠ΅;
  • Π΄ΠΆΠΎΠ±Π°Ρ… ΠΈ шагаx (ΠΈΡ… статусах, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ…);
  • ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, событии-Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅, сСкрСтах ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;
  • срСдС выполнСния (runner, ОБ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΏΡƒΡ‚ΡŒ ΠΈ Ρ‚.Π΄.).

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ workflow Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌ β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ значСния Π² runtime, Π½Π΅ захардкоТивая ΠΈΡ… Π² YAML.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· синтаксис ${{ ... }} ΠΈ доступны Π²ΠΎ всСх выраТСниях (if:, run:, env: ΠΈ Ρ‚.Π΄.).

name: ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования контСкста
 
on: [push]
 
jobs:
  show-context:
    runs-on: ubuntu-latest
    steps:
      - name: Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€Π° ΠΏΡƒΡˆΠ°
        run: echo "Commit by ${{ gitverse.actor }} on branch ${{ gitverse.ref_name }}"
ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ обращСния
gitverseΠ˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ событии, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ.Ρ‚.Π΄${{ gitverse.repository }}
githubΠ’ΠΎ ΠΆΠ΅ самоС Ρ‡Ρ‚ΠΎ ΠΈ gitverse, для собратной совмСстимости${{ github.repository }}
envΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния${{ env.MY_VAR }}
jobΠ”Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ job Π² workflow${{ job.build.result }}
jobsΠ”Π°Π½Π½Ρ‹Π΅ ΠΎ всСх job Π² workflow${{ jobs.build.result }}
runnerБвСдСния ΠΎ срСдС выполнСния (ОБ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°)${{ runner.os }}
secretsΠ‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² настройках рСпозитория${{ secrets.TOKEN }}
strategyΠ”Π°Π½Π½Ρ‹Π΅ ΠΎ matrix-сборкС${{ strategy.job-index }}
matrixΠ’Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния matrix-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²${{ matrix.python-version }}
stepsΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… шагов${{ steps.test.outputs.coverage }}
inputsΠ’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для workflow_call${{ inputs.name }}
varsΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ рСпозитория ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ${{ vars.ENVIRONMENT }}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с условиями

steps:
  - name: Π”Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ main
    if: ${{ gitverse.ref_name == 'master' && gitverse.event_name == 'push' }}
    run: echo "Deploying to production..."
  - name: ΠŸΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ env контСкст
    run: echo '${{ toJson(env) }}

Π’Ρ‹ нашли Ρ‡Ρ‚ΠΎ искали?