ΠΠΎΠ½ΡΠ΅ΠΊΡΡ 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) }}ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΎΠ³Π΄Π° workflow Π·Π°ΠΏΡΡΠ΅Π½ Π½Π° ΡΠ°Π½Π½Π΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ ΡΡΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ checkout ΠΈ uses Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π²Π½ΡΡΡΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ:
- ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΎΠ΄Π½ΠΎΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ);
- ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΎΠ΄Π½ΠΎΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ);
- ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΎΠ΄Π½ΠΎΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ);
- ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ, ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ).
ΠΠ°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ:
- ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ);
- ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ, ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ);
- ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ;
- ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ β ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΅ΡΠ»ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ, ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ).
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
name: ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
uses: actions/checkout@v4
- name: Checkout Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈΠ· ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ
uses: actions/checkout@v4
with:
repository: organisation/another-repo
ref: 'master'
- name: Π§ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ΄ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
run: |
echo "README Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ"
ls -la
cat README.md