ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π²ΠΎ werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ°

ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π²ΠΎ werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ°

Π’Π΅ΠΌΠ°Ρ‚Π° Π·Π° ΠΌΠΎΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π΅ дискутирана повСќС ΠΎΠ΄ Сднаш ΠΈ, ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ²Π΅Ρ€Π·ΠΈΠΈ. Π‘ΠΎ создавањС Π²Π΅Ρ€Ρ„ ΠΊΠ°ΠΊΠΎ Π°Π»Π°Ρ‚ΠΊΠ° со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ процСсот Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄ ΠΎΠ΄ слики ΠΎΠ΄ Git Π΄ΠΎ Docker (ΠΈ ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° Π³ΠΈ доставува Π΄ΠΎ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ), Π½Π΅ размислувамС ΠΌΠ½ΠΎΠ³Ρƒ Π·Π° Ρ‚ΠΎΠ° кој ΠΈΠ·Π±ΠΎΡ€ Π΅ Π½Π°Ρ˜Π΄ΠΎΠ±Π°Ρ€. Π—Π° нас Π΅ ΠΏΡ€ΠΈΠΌΠ°Ρ€Π½ΠΎ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠ΅ сС ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мислСња (Π°ΠΊΠΎ Ρ‚ΠΎΠ° Π½Π΅ Π΅ Π²ΠΎ спротивност со Π·Π΄Ρ€Π°Π²ΠΈΠΎΡ‚ Ρ€Π°Π·ΡƒΠΌ, сС Ρ€Π°Π·Π±ΠΈΡ€Π°).

ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π΅ΡˆΠ½Π°Ρ‚Π° ΠΌΠΎΠ½ΠΎ-Ρ€Π΅ΠΏΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° werf Π΅ Π΄ΠΎΠ±Π°Ρ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΎΠ²Π°. Но, ΠΏΡ€Π²ΠΎ, ајдС Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π΅ Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ ΠΏΠΎΠ²Ρ€Π·Π°Π½Π° со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ° ...

ΠŸΡ€Π°ΡˆΠ°ΡšΠ°

АјдС Π΄Π° замислимС Ρ‚Π°ΠΊΠ²Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°. ΠšΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ Ρ‚ΠΈΠΌΠΎΠ²ΠΈ ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° нСзависни ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠŸΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° Kubernetes ΠΈ Π·Π°Ρ‚ΠΎΠ° сС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. Π—Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ, слики, ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Π²ΠΈ Π΅ рСгистар (рСгистар). Како Ρ‚Π°ΠΊΠΎΠ² рСгистар, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π° користи Docker Hub со Π΅Π΄Π½Π° смСтка COMPANY. Π‘Π»ΠΈΡ‡Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ систСми Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄, Docker Hub Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π° Π²Π³Π½Π΅Π·Π΄Π΅Π½Π° Ρ…ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ˜Π° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΎ COMPANY/PROJECT/IMAGE. Π’ΠΎ Ρ‚ΠΎΡ˜ ΡΠ»ΡƒΡ‡Π°Ρ˜β€¦ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° складиратС Π½Π΅ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ рСгистарот со ΠΎΠ²Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π±Π΅Π· Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ посСбна смСтка Π·Π° сСкој ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?

ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π²ΠΎ werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ°

МоТСби, ΠΎΠΏΠΈΡˆΠ°Π½Π°Ρ‚Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° Π½Π΅ΠΊΠΎΠΌΡƒ ΠΌΡƒ Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π° ΠΎΠ΄ ΠΏΡ€Π²Π° Ρ€Π°ΠΊΠ°, Π½ΠΎ ајдС Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅Ρ‚ΠΎ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ, Ρ‚.Π΅. Π±Π΅Π· ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Docker Hub.

РСшСнија

Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π΅Π½, Π΄ΠΎΠ°Ρ“Π° Π²ΠΎ Π΅Π΄Π½Π° слика, Ρ‚ΠΎΠ³Π°Ρˆ Π½Π΅ΠΌΠ° ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ΠΈ Сдноставно Π³ΠΈ Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΠΌΠ΅ сликитС Π²ΠΎ рСгистарот Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚.

Кога Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ прСтставСна ΠΊΠ°ΠΊΠΎ повСќС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, микроуслуги, Ρ‚ΠΎΠ³Π°Ρˆ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ пристап. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° која сС состои ΠΎΠ΄ Π΄Π²Π΅ слики: frontend ΠΈ backend - ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ сС:

  1. Π§ΡƒΠ²Π°Ρ˜Ρ‚Π΅ Π³ΠΈ сликитС Π²ΠΎ посСбни Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°:

    ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π²ΠΎ werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ°

  2. Π§ΡƒΠ²Π°Ρ˜Ρ‚Π΅ сè Π²ΠΎ Π΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сликата Π²ΠΎ ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½:

    ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° monorepo ΠΈ multirepo Π²ΠΎ werf ΠΈ ΠΊΠ°ΠΊΠ²Π° врска ΠΈΠΌΠ° Docker Registry со Ρ‚ΠΎΠ°

NB: Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, постои Π΄Ρ€ΡƒΠ³Π° ΠΎΠΏΡ†ΠΈΡ˜Π° со Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°, PROJECT-frontend ΠΈ PROJECT-backend, Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ€Π°Π΄ΠΈ слоТСноста Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π°, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ распрСдСлбата Π½Π° ΠΏΡ€Π°Π²Π°Ρ‚Π° ΠΌΠ΅Ρ“Ρƒ корисницитС.

Π²Π΅Ρ€Ρ„ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°

ΠŸΡ€Π²ΠΈΡ‡Π½ΠΎ, werf сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ Π½Π° Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° - Π·Π° ΡΡ€Π΅ΡœΠ°, ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ рСгистри ја ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°. ΠŸΠΎΡ‡Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° v1.0.4-Π°Π»Ρ„Π°.3, Π΄ΠΎΠ΄Π°Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π° со рСгистри Π²ΠΎ ΠΊΠΎΠΈ гнСздСњС Π½Π΅ Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΎ, Π° Docker Hub Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ². Од Ρ‚ΠΎΡ˜ ΠΌΠΎΠΌΠ΅Π½Ρ‚, корисникот ΠΈΠΌΠ° ΠΈΠ·Π±ΠΎΡ€ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ Π·Π°Ρ‡ΡƒΠ²Π° сликитС Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ достапна ΠΏΠΎΠ΄ ΠΎΠΏΡ†ΠΈΡ˜Π° --images-repo-mode=multirepo|monorepo (стандардно multirepo, Ρ‚.Π΅. ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°). Π“ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΡˆΠ΅ΠΌΠΈΡ‚Π΅ со ΠΊΠΎΠΈ сликитС сС Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ рСгистарот. Π”ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ саканиот Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° основнитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° сè Π΄Ρ€ΡƒΠ³ΠΎ ќС останС Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΎ.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Π²Π΅Ρ€Ρ„ ΠΌΠΎΠΆΠ΅ Π΄Π° сС постават ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π½Π°Ρ‚Π° срСдина, Π²ΠΎ CI / CD систСмитС, Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π΅ лСсно Π΄Π° сС постави Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π·Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ со GitLab само Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π½Π°Ρ‚Π° срСдина Π²ΠΎ поставкитС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚: ΠŸΠΎΡΡ‚Π°Π²ΠΊΠΈ -> CI / CD -> ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Ако Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ слики ΠΈ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π·Π° ΠΎΠ²ΠΈΠ΅ процСси Π΄Π΅Ρ‚Π°Π»Π½ΠΎ Π²ΠΎ соодвСтнитС написи Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°: ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅), Ρ‚ΠΎΠ³Π°Ρˆ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ СдинствСно Π³ΠΎ ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° ΡˆΠ°Π±Π»ΠΎΠ½ΠΎΡ‚ со кој ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ со сликата.

ΠƒΠ°Π²ΠΎΠ»ΠΎΡ‚ Π΅ Π²ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈΡ‚Π΅

Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΈ Π³Π»Π°Π²Π½Π°Ρ‚Π° Ρ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΡ˜Π° ΠΏΡ€ΠΈ додавањС Π½Π° Π½ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π΅ Π²ΠΎ процСсот Π½Π° Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° рСгистарот (Π·Π° карактСристикитС Π·Π° Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ ΠΎΠ΄ werf, Π²ΠΈΠ΄Π΅Ρ‚Π΅ ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅).

Кога чисти, werf Π³ΠΈ Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ сликитС ΡˆΡ‚ΠΎ сС користат Π²ΠΎ кластСритС Π½Π° Kubernetes, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ корисникот. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС засноваат Π½Π° ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° ΠΎΠ·Π½Π°ΠΊΠΈΡ‚Π΅ Π²ΠΎ стратСгии. ΠœΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ стратСгии:

  1. 3 стратСгии ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° Git ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΎΠ·Π½Π°ΠΊΠ°, Ρ€Π°Π·Π³Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ ΠΈ commit;
  2. 1 ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡ˜Π° Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ сопствСни ΠΎΠ·Π½Π°ΠΊΠΈ.

Π—Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΠΌΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΎΠ·Π½Π°ΠΊΠΈ ΠΊΠΎΠ³Π° ја ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΠΌΠ΅ сликата Π²ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° слика. Π‘Π°ΠΌΠΎΡ‚ΠΎ Π·Π½Π°Ρ‡Π΅ΡšΠ΅ Π΅ Ρ‚.Π½ ΠΌΠ΅Ρ‚Π°-ΠΎΠ·Π½Π°ΠΊΠ° - ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½Π°Ρ‚ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π° Π±Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ Π³Ρ€Π°Π½ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ·Π½Π°ΠΊΠ° ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° Git, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΅ Π΄Π° сС ΠΈΠ·Π±Ρ€ΠΈΡˆΠ΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΎΡ‚ΠΎ нСискористСни слики ΠΎΠ΄ рСгистарот, кој Π΅ ΠΏΠΎΠΊΡ€ΠΈΠ΅Π½ со Π΄Π΅Π» ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

Кога сС Π·Π°Ρ‡ΡƒΠ²Π°Π½ΠΈ Π²ΠΎ Π΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ (monorepo), Π²ΠΎ ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π° со слика, ΠΏΠΎΠΊΡ€Π°Ρ˜ ΠΌΠ΅Ρ‚Π°-Ρ‚Π°Π³ΠΎΡ‚, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Ρ‡ΡƒΠ²Π° ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сликата: PROJECT:frontend-META-TAG. Π—Π° Π΄Π° Π³ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌΠ΅, Π½Π΅ Π²ΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ² спСцифичСн сСпаратор, Ρ‚ΡƒΠΊΡƒ Сдноставно ја Π΄ΠΎΠ΄Π°Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° врСдност Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° слика ΠΏΡ€ΠΈ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ.

NB: Ако стС заинтСрСсирани Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ сè ΡˆΡ‚ΠΎ Π΅ опишано Π²ΠΎ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° werf, Ρ‚ΠΎΠ³Π°Ρˆ ΠΏΠΎΡ‡Π΅Ρ‚Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ПР 1684.

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Π½Π΅ΠΌΠ° Π΄Π° ΠΎΠ±Ρ€Π½ΡƒΠ²Π°ΠΌΠ΅ повСќС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΈ оправданоста Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ пристап: Π·Π° стратСгиитС Π·Π° ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π°ΡšΠ΅, ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΈ процСсот Π½Π° ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΊΠ°ΠΊΠΎ Ρ†Π΅Π»ΠΈΠ½Π° - сСто ΠΎΠ²Π° Π΅ Π΄Π΅Ρ‚Π°Π»Π½ΠΎ опишано Π²ΠΎ Π½Π΅ΠΎΠ΄Π°ΠΌΠ½Π΅ΡˆΠ½ΠΈΠΎΡ‚ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ Π½Π° Π”ΠΌΠΈΡ‚Ρ€ΠΈΡ˜ Π‘Ρ‚ΠΎΠ»Ρ˜Π°Ρ€ΠΎΠ²: β€žwerf Π΅ Π½Π°ΡˆΠ°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° CI/CD Π²ΠΎ Kubernetes".

Π—Π° Π΄Π° Ρ€Π΅Π·ΠΈΠΌΠΈΡ€Π°ΠΌΠ΅

НСдостатокот Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π½Π΅Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ рСгистри Π½Π΅ бСшС Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ Π·Π° нас ΠΈΠ»ΠΈ Π·Π° нас ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈΡ‚Π΅ корисници Π½Π° werf - Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π°, сСкогаш ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅Ρ‚Π΅ посСбСн рСгистар Π½Π° слики (ΠΈΠ»ΠΈ Π΄Π° сС ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈΡ‚Π΅ Π½Π° условСн рСгистар Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π²ΠΎ Google Cloud) ... Π‘Π΅ΠΏΠ°ΠΊ, ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ изглСдашС Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ со Ρ†Π΅Π» Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° ΠΏΠΎΡˆΠΈΡ€ΠΎΠΊΠ°Ρ‚Π° Π·Π°Π΅Π΄Π½ΠΈΡ†Π° DevOps. ΠŸΡ€ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΡΠΏΡ€ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅, сС соочивмС со Π³Π»Π°Π²Π½Π°Ρ‚Π° Ρ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΡ˜Π° Π²ΠΎ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ Π·Π° Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° рСгистарот Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π° сè Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΎ, ΡƒΠ±Π°Π²ΠΎ Π΅ Π΄Π° сфатимС Π΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΠΌΡƒ ΠΌΡƒ стана полСсно ΠΈ Π½ΠΈΠ΅ (ΠΊΠ°ΠΊΠΎ Π³Π»Π°Π²Π½ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚) Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΠΈ Π²ΠΎ ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΠΎΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°.

ΠžΡΡ‚Π°Π½Π΅Ρ‚Π΅ со нас ΠΈ наскоро ќС Π²ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π²ΠΎ Π²Π΅Ρ€Ρ„!

PS

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ ΠΈ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π±Π»ΠΎΠ³:

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€