ΠΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΊΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½ΠΈΠΊΠΎΠ³Π°. ΠΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈ ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ ΠΌΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½Π° Π³ΡΠ΅ΡΠΊΠ°, Π½ΡΠΌΠ°ΡΠ° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ Dockerfiles Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.

Π©Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° β GitOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° Ρ Π²ΡΡΠΊΠ° CI/CD ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ:
- Π΄Π° ΡΡΠ±ΠΈΡΠ° ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΎΠ±ΡΠ°Π·ΠΈ,
- Π΄Π° ΡΠ°Π·Π³ΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes,
- Π΄Π° ΠΈΠ·ΡΡΠΈΠ²Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² Π΅Π΄ΠΈΠ½Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΄Π° Π΄Π°Π²Π° Π½Π° DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ (ΠΊΠ°ΡΠΎ Helm ΠΈ Docker). ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ Π½ΡΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π½ΡΠΊΠ°ΠΊΠ²Π° Π·Π°Π΄Π°ΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΎΠ²Π°.
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ: ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ»ΡΡΠΈ ΠΈ ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π² werf: Π»ΠΈΠΏΡΠ²Π°ΡΠ΅ Π½ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΡ Dockerfile. ΠΠΊΠΎ Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΎΡΠ΅ Π² ΠΏΡΡΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf (ΡΠΎΠ³Π°Π²Π° Π²ΡΠ΅ ΠΎΡΠ΅ ).
Π‘ΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Docker ΠΎΠ±ΡΠ°Π·ΠΈ, Π±ΡΡΠ·ΠΎ ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, ΡΠ΅ Dockerfile Π½Π΅ Π½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠΆΠ΄Π° Π·Π° Π½ΡΠΊΠΎΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΡΡ
Π΅ΠΌΠ°:
- Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΎΠ±ΡΠΎΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- Π΄Π° ΡΠ΅ ΡΡΠ±Π΅ΡΠ°Ρ Π°ΠΊΡΠΈΠ²ΠΈ,
- ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ β Π΄Π° ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° ΠΊΠΎΠ΄ΡΡ Π² ΠΎΠ±ΡΠ°Π·Π° Π±ΡΡΠ·ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
- ΠΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ±ΠΎΡΡΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° Π±ΡΡΠ·ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° Π½ΠΎΠ² ΡΠ»ΠΎΠΉ, ΠΊΠ°ΡΠΎ Π½Π°Π»Π°Π³Π° ΠΏΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠΊΠΎ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ·Π΄Π°Π΄Π΅ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΡΡΡΠΏΠΊΠ°.
ΠΡΠΌ Π΄Π½Π΅ΡΠ½Π° Π΄Π°ΡΠ° Π² Π½Π°ΡΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΈΠΌΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΈΠ²ΠΈ Π±ΡΡ Π° ΡΠ°ΠΊΠΈΠ²Π°.
Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΡΠΌΠ΅, ΡΠ΅ Π²ΡΠΎΡΡΠΆΠΈΡ ΠΌΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (Π²ΠΆ. ΠΏΠΎ-Π΄ΠΎΠ»Ρ) ΠΈ ΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΠΏΠΎ ΠΏΡΡΡ β Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ DSL! Π ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠΎΠΉ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΏΠΎ ΡΡΡΠΏΠΊΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΡΡΠΏΠΊΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. Π Π΄ΠΎΠΏΡΠ»Π²Π°ΡΠ΅ Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π²ΡΡΡΠ°ΡΠ΅ DSL Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠ΅Π» β ΡΡΠ±ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ DSL Π±Π΅ΡΠ΅ Π½Π° Ruby, Π° Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Golang β ΠΊΠΎΠ½ΡΠΈΠ³ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΡΡΠ°Π» ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² YAML-ΡΠ°ΠΉΠ»Π΅.

Π‘ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π·Π° dapp Π½Π° Ruby

ΠΠΊΡΡΠ°Π»Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ Π·Π° werf Π½Π° YAML
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΡΡΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ» Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ΅ Π½Π° ΠΌΡΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Dockerfile ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΡΠ±ΠΎΡΠΊΠ° Π² Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ commit.
NB: Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠΈΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ (Π² YAML) ΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Stapel-ΡΠ±ΠΎΡΡΠΈΠΊ, Π²Π΅ΡΠ΅ Π΅ ΠΈΠ·ΡΠ°ΡΠ½Π°Π» Π² Π΄ΠΎΡΡΠ° ΠΌΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠ΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΠ°ΡΠΈΠΈ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π² .
ΠΡΡΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠΎ Π½ΠΈΠ΅ ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, ΠΈ ΡΠΎ Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π°, ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π΅Π΄Π½Π° Π³ΡΠ΅ΡΠΊΠ°: Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Dockerfile ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΠΌΠ΅ Π² ΡΡΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Ρ.Π΅. Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ, Π΄Π° Π³ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΠ°ΠΌΠ΅ ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°ΠΌΠ΅). ΠΠ°ΠΊ Π±Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Kubernetes ΠΈ Π΄Π° Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Dockerfile, Ρ.Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ?..
ΠΠΌΠ΅ΡΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π²ΡΠΏΡΠΎΡ Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅, Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Dockerfile (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Dockerfile-ΠΈ) ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf?
NB: ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π·Π°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf? ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅:
- ΠΏΡΠ»Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ;
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ Π΅Π΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΡΠ°ΡΡΠΎΠ²Π΅, ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Ρ Helm.
Π‘ ΠΏΠΎ-ΠΏΡΠ»Π½ΠΈΡ ΠΈΠΌ ΡΠΏΠΈΡΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Π½Π° .
Π ΡΠ°ΠΊΠ°, Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈ Π±ΠΈΡ ΠΌΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Dockerfile Π½Π° Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³, ΡΠΎ ΡΠ΅Π³Π° Ρ ΡΠ°Π΄ΠΎΡΡ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΠΌ: βΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ Π½Π° werf Π΄Π° ΡΡΠ±Π΅ΡΠ΅ Π²Π°ΡΠΈΡΠ΅ Dockerfile-ΠΈ!β
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅?
ΠΡΠ»Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΡΠ΅Π»ΠΈΠ·Π° . ΠΠ±ΡΠΈΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅ ΠΏΡΠΎΡΡ: ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΠΎΡΠΎΡΠ²Π° ΠΏΡΡΡ Π΄ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ Dockerfile Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° werf, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° werf buildβ¦ ΠΈ Π²ΡΠΈΡΠΊΠΎ β werf ΡΠ΅ ΡΡΠ±Π΅ΡΠ΅ ΠΎΠ±ΡΠ°Π·Π°. ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ±ΡΠ²ΡΠ²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ Dockerfile Π² ΠΊΠΎΡΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°:
FROM ubuntu:18.04
RUN echo Building ... Π ΠΎΠ±ΡΠ²ΡΠ²Π°ΠΌΠ΅ werf.yaml, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ·ΠΈ Dockerfile:
configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: .\/Dockerfile ΠΡΠΈΡΠΊΠΎ! ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° werf build:

ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ werf.yaml Π·Π° ΡΠ±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Dockerfile-ΠΈ:
configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: .\/dockerfiles\/Dockerfile-backend
---
image: frontend
dockerfile: .\/dockerfiles\/Dockerfile-frontend ΠΠ°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ β ΠΊΠ°ΡΠΎ --build-arg ΠΈ --add-host β ΡΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° werf. ΠΡΠ»Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Dockerfile Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ Π½Π° .
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΠ²Π°?
Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΠΊΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅ Π² Docker. ΠΠΎ, Π²Π°ΠΆΠ½ΠΎ Π΅, ΡΠ΅ werf ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile Π² ΡΠ²ΠΎΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°?
- ΠΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ°Π·, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ Dockerfile, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅ΡΠ°ΠΏ, Π½Π°ΡΠ΅ΡΠ΅Π½
dockerfile(ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π² werf ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ). - ΠΠ° Π΅ΡΠ°ΠΏΠ°
dockerfilewerf ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile. ΠΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile, ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π° Π΅ΡΠ°ΠΏΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡdockerfileΠΈ werf ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Ρ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Dockerfile. ΠΠΊΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, werf Π²Π·Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ ΠΊΠ΅ΡΠ° (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π² werf Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ Π² ). - Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ±ΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
werf publish(ΠΈΠ»ΠΈwerf build-and-publish) ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π² Kubernetes. ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Π² Docker Registry ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° werf, Ρ.Π΅. ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ (ΠΏΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΎΡ N Π΄Π½ΠΈ), ΠΎΠ±ΡΠ°Π·ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°.
ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°:
- ;
- ;
- .
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ
1. ΠΡΠ½ΡΠ΅Π½ URL Π² ADD Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ΅Π½ URL Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° ADD. Werf Π½ΡΠΌΠ° Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ URL. Π ΡΠΊΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ.
2. ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ .git Π² ΠΎΠ±ΡΠ°Π·
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .git Π² ΠΎΠ±ΡΠ°Π·Π° β Π΅ Π»ΠΎΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈ Π΅ΡΠΎ Π·Π°ΡΠΎ:
- ΠΠΊΠΎ
.gitΠΎΡΡΠ°Π²Π° Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π·, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΡΡΡΠ°Π²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ Π½Π° : ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΠΉΠ½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ, Π½Π΅ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π°git checkoutΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠΌΠΈΡ. -
.gitΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π·Π° (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π³ΠΎΠ»ΡΠΌ Π·Π°ΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π² Π½Π΅Π³ΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ° ΠΈΠ·ΡΡΠΈΡΠΈ). Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° work-tree, ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΡΠ°ΠΌΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΈΡ, Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² Git. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅.gitΡΠΈΠ½Π°Π»Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· Π½ΡΠΌΠ° Π΄Π° ΡΡΠ°Π±ΠΎΡΠΈ: ΠΎΠ±ΡΠ°Π·ΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠ·Π»ΠΈΡΠ΅Π½ ΡΠ»ΠΎΠΉ β ΡΠ°ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ Docker. - Docker ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΈΠ·Π»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΊΠΎΠΌΠΈΡ, Π½ΠΎ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ work-tree. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, GitLab ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π²
/home/gitlab-runner/builds/HASH/[0-N]/yourprojectΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅. ΠΠ·Π»ΠΈΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°.gitΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΊΠΎΠΌΠΈΡ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ ΠΏΡΠ½ΠΊΡ ΠΈΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΈΡΠ° ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° werf. Werf ΠΈΠ·ΠΈΡΠΊΠ²Π°, Π·Π° Π΄Π° Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡΡ ΠΊΠ΅Ρ, ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, werf deploy). ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ werf ΠΏΡΠ΅ΡΠΌΡΡΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π·Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² werf.yaml, ΠΈ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΎΠ½Π½ΠΈΡ ΠΊΠ΅Ρ β Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ°. ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π° Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ .git, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π΅ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΊΠ΅Ρ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½Π΅ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈ werf Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΡΡΠΈ ΡΠ°ΠΊΠ°Π²Π° Π³ΡΠ΅ΡΠΊΠ° (ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΠΈΠΆΡΠ΅ Π² ).
Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ ΡΠ°ΠΌΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΠ΅Π· ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ADD Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΎΡΠΎ Dockerfile, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΠΊΠ΅ΡΠ°, ΡΡΠ±ΡΠ°Π½ ΠΏΠΎ ΡΠΎΠ·ΠΈ Dockerfile, ΡΠΏΡΡΠΌΠΎ Π½Π΅ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Git.
Π Π΅Π·ΡΠΌΠ΅
ΠΠ°ΡΠΈΡΡ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π½ΡΠΆΠ΄ΠΈ Π±Π΅ΡΠ΅ ΡΡΡΠ΄Π΅Π½, ΡΠ΅ΡΡΠ΅Π½ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½: Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΡΡΠΈΠ»ΠΊΠΈ Π½Π°Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Dockerfile, Π½Π°ΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. Π ΡΠΎΠ²Π° Π΄Π°Π΄Π΅ ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°: Stapel-ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Ρ Π·Π°Π΄Π°ΡΠ°ΡΠ°.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ ΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π·Π° Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Dockerfile. Π‘Π΅Π³Π° ΡΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½, Π° Π² Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Dockerfile Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ Ρ Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Stapel Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Kubernetes (Ρ.Π΅. ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° runnerβΠΈ Π² Kubernetes, ΠΊΠ°ΠΊΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π² kaniko).
Π’Π°ΠΊΠ° ΡΠ΅, Π°ΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Dockerfile-Π°β¦ ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ !
P.S. Π‘ΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°
- ;
- ;
- ;
- ;
- ;
- ;
- .
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³: «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
