ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

ΠŸΠΎΠ·Π΄Ρ€Π°Π² свима Π½Π° ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠ³Ρƒ! Ово јС Ρ‚Ρ€Π΅Ρ›ΠΈ пост Ρƒ Π½ΠΈΠ·Ρƒ Ρƒ којСм ΠΏΠΎΠΊΠ°Π·ΡƒΡ˜Π΅ΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π½Π΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° Π Π΅Π΄ Π₯Π°Ρ‚ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚.

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Π£ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π° Π΄Π²Π° поста ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ смо ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½Π΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ само Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡ€Π°ΠΊΠ° ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° користимо Π½ΠΎΠ²Ρƒ Π‘2И слику зајСдно са Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ имиџом Π₯ВВП сСрвСра, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΠ“Π˜ΠΠšΠ‘, користСћи ΡƒΠ»Π°Π½Ρ‡Π°Π½Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Π·Π° ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠ΅ .

Данас Ρ›Π΅ΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ сСрвСр Π·Π° Π²Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ ΠΈ Π΄Π° Π³Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΡƒΡ˜Π΅Ρ‚Π΅ са Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΌ систСмом Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ Ρ›Π΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚Π° су ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ сС ΠΌΠΎΠ³Ρƒ користити ΠΊΠ°ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ склоповима.

ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅

Π’ΠΎΠΊ Ρ€Π°Π΄Π° Ρ€Π°Π·Π²ΠΎΡ˜Π°

Као ΡˆΡ‚ΠΎ јС Π²Π΅Ρ› Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρƒ ΠΏΡ€Π²ΠΈ пост, Ρ‚ΠΈΠΏΠΈΡ‡Π°Π½ процСс Ρ€Π°Π·Π²ΠΎΡ˜Π° Π·Π° ΠΌΠΎΠ΄Π΅Ρ€Π½Π΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π½Π΅ΠΊΠ° врста β€žΡ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ ΡΠ΅Ρ€Π²Π΅Ρ€Π°β€œ који ΠΏΡ€Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Ρƒ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΌ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ°. Када сС појавС, ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ сС ΠΈΠ·Ρ€Π°Π΄Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, Π° Π·Π°Ρ‚ΠΈΠΌ сС Π°ΠΆΡƒΡ€ΠΈΡ€Π° Ρƒ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‡Ρƒ.

Π£ Π²Π΅Ρ›ΠΈΠ½ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠ²ΠΈΡ€Π°, Ρ‚Π°ΠΊΠ°Π² β€žΡΠ΅Ρ€Π²Π΅Ρ€ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜β€œ јС ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ Ρƒ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ Π°Π»Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ линијС.

Π›ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π²ΠΎ, Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΎΠ²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅ ΠΊΠ°Π΄Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. Π£Π·ΠΌΠΈΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠ°ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π Π΅Π°Π³ΠΎΠ²Π°Ρ‚ΠΈ ΠΈΠ· ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ… Ρ‡Π»Π°Π½Π°ΠΊΠ°, ΠΈΠ°ΠΊΠΎ сС скоро исти ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ Ρ‚ΠΎΠΊΠ° посла ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Ρƒ Ρƒ свим Π΄Ρ€ΡƒΠ³ΠΈΠΌ саврСмСним ΠΎΠΊΠ²ΠΈΡ€ΠΈΠΌΠ°.
Π”Π°ΠΊΠ»Π΅, Π΄Π° бисмо ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ β€žΠ΄Π΅Π² ΡΠ΅Ρ€Π²Π΅Ρ€β€œ Ρƒ нашСм Π Π΅Π°Ρ†Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡƒΠ½Π΅Ρ›Π΅ΠΌΠΎ слСдСћу ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ npm run start

Π—Π°Ρ‚ΠΈΠΌ Ρ›Π΅ΠΌΠΎ Ρƒ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π½Π΅ΡˆΡ‚ΠΎ ΠΎΠ²Π°ΠΊΠΎ:

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

И наша Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρ›Π΅ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ Ρƒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎΠΌ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡Ρƒ:

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Π‘Π°Π΄Π°, Π°ΠΊΠΎ унСсСмо ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π° Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡Ρƒ.

ОК, свС јС јасно са Ρ€Π°Π·Π²ΠΎΡ˜Π΅ΠΌ Ρƒ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΡƒ, Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΎ постићи Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ?

Развојни сСрвСр Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ

Ако сС сСћатС, Ρƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈ пост, ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ смо Ρ‚Π°ΠΊΠΎΠ·Π²Π°Π½Ρƒ Ρ„Π°Π·Ρƒ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ° сликС Π‘2И ΠΈ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΄Π° јС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎΡ˜ врСдности сСрвисни ΠΌΠΎΠ΄ΡƒΠ» ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½ Π·Π° ΡΠ΅Ρ€Π²ΠΈΡΠΈΡ€Π°ΡšΠ΅ нашС Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, Π°ΠΊΠΎ Π±ΠΎΡ™Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ скрипту ΠΈΠ· Ρ‚ΠΎΠ³ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, садрТи ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° $НПМ_РУН, која Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΡΠ²ΠΎΡ˜Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° користимо ΠΌΠΎΠ΄ΡƒΠ» нодСсхифт Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π½Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ:

$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app

НапомСна: Π“ΠΎΡ€ΡšΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ јС скраћСн Π΄Π° Π±ΠΈ илустровао ΠΎΠΏΡˆΡ‚Ρƒ ΠΈΠ΄Π΅Ρ˜Ρƒ.

ОвдС смо Π΄ΠΎΠ΄Π°Π»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° НПМ_РУН Ρƒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρƒ, која Π³ΠΎΠ²ΠΎΡ€ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ ΠΈΠ·Π²ΠΎΡ’Π΅ΡšΠ° Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π° ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ ΠΈΠ°Ρ€Π½, која ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ Π Π΅Π°Ρ†Ρ‚ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ сСрвСр ΡƒΠ½ΡƒΡ‚Π°Ρ€ нашСг ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΏΠΎΠ΄.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊ Ρ‚Ρ€ΠΊΠ°Ρ‡ΠΊΠ΅ капсулС, ΠΈΠ·Π³Π»Π΅Π΄Π°Ρ›Π΅ ΠΎΡ‚ΠΏΡ€ΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Наравно, свС ΠΎΠ²ΠΎ Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Π½ΠΈΡˆΡ‚Π° Π΄ΠΎΠΊ Π½Π΅ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΡƒΡ˜Π΅ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΊΠΎΠ΄ са ΠΊΠΎΠ΄ΠΎΠΌ, који сС Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΏΡ€Π°Ρ‚ΠΈ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅, Π°Π»ΠΈ ΠΆΠΈΠ²ΠΈ Π½Π° ΡƒΠ΄Π°Ρ™Π΅Π½ΠΎΠΌ сСрвСру.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° даљинског ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°

Π‘Ρ€Π΅Ρ›ΠΎΠΌ, нодСсхифт ΠΌΠΎΠΆΠ΅ Π»Π°ΠΊΠΎ ΠΏΠΎΠΌΠΎΡ›ΠΈ Ρƒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜ΠΈ, Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Π°Ρ‚Ρ†Ρ… Π΄Π° бистС ΠΏΡ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅.

Π”Π°ΠΊΠ»Π΅, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ смо ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ Π½Π°Ρ€Π΅Π΄Π±Ρƒ Π·Π° ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ сСрвСра Π·Π° Π½Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° користимо слСдСћу ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ npx nodeshift watch

Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‚ΠΎΠ³Π°, Π±ΠΈΡ›Π΅ успостављСна Π²Π΅Π·Π° са ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠΌ који смо ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ ΠΌΠ°Π»ΠΎ Ρ€Π°Π½ΠΈΡ˜Π΅, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π°ΡˆΠΈΡ… Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° са ΡƒΠ΄Π°Ρ™Π΅Π½ΠΈΠΌ кластСром Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π°, Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π½Π° нашСм Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ систСму Ρ›Π΅ ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ Π΄Π° сС Π½Π°Π΄Π³Π»Π΅Π΄Π°Ρ˜Ρƒ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅.

Π‘Ρ‚ΠΎΠ³Π°, Π°ΠΊΠΎ сада Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ срц/Апп.јс, систСм Ρ›Π΅ Ρ€Π΅Π°Π³ΠΎΠ²Π°Ρ‚ΠΈ Π½Π° ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅, ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ ΠΈΡ… Π½Π° ΡƒΠ΄Π°Ρ™Π΅Π½ΠΈ кластСр ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ сСрвСр, који Ρ›Π΅ Π·Π°Ρ‚ΠΈΠΌ Π°ΠΆΡƒΡ€ΠΈΡ€Π°Ρ‚ΠΈ Π½Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡Ρƒ.

Π”Π° бисмо ΡƒΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΈΠ»ΠΈ слику, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°Ρ˜Ρƒ Ρ†Π΅Π»Π΅ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000

$ npx nodeshift watch --strictSSL=false

Команда Π²Π°Ρ‚Ρ†Ρ… јС Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π½Π° Π²Ρ€Ρ…Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΡ† рсинц, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сазнати вишС ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅ ΠΎΠ²Π΄Π΅.

Ово јС Π±ΠΈΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π Π΅Π°Ρ†Ρ‚, Π°Π»ΠΈ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ исти ΠΌΠ΅Ρ‚ΠΎΠ΄ сС ΠΌΠΎΠΆΠ΅ користити са Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠΊΠ²ΠΈΡ€ΠΈΠΌΠ°, само подСситС ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° НПМ_РУН ΠΏΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ.
 

ΠžΠΏΠ΅Π½ΡΡ…ΠΈΡ„Ρ‚ ПипСлинСс

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Π—Π°Ρ‚ΠΈΠΌ Ρ›Π΅ΠΌΠΎ ΠΏΡ€ΠΈΡ‡Π°Ρ‚ΠΈ ΠΎ Π°Π»Π°Ρ‚Ρƒ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ПипСлинСс ΠΈ ΠΊΠ°ΠΊΠΎ сС ΠΌΠΎΠΆΠ΅ користити ΠΊΠ°ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΡƒΠ»Π°Π½Ρ‡Π°Π½ΠΈΠΌ Π³Ρ€Π°Π΄ΡšΠ°ΠΌΠ°.

Π¨Ρ‚Π° су ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ПипСлинСс јС ЦИ/Π¦Π” систСм ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π΅ ΠΈ испорукС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡšΠ΅ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π° користСћи Π’Π΅ΠΊΡ‚ΠΎΠ½. Π’Π΅ΠΊΡ‚ΠΎΠ½ јС флСксибилан ЦИ/Π¦Π” ΠΎΠΊΠ²ΠΈΡ€ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° који јС ΡƒΡ€ΠΎΡ’Π΅Π½ Ρƒ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡƒ који Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΡƒΡ˜Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρƒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠ° (ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ, Π±Π΅Π· сСрвСра, Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π΅ машинС, ΠΈΡ‚Π΄.) Π°ΠΏΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°ΡšΠ΅ΠΌ ΠΎΠ΄ основног слоја.

Π Π°Π·ΡƒΠΌΠ΅Π²Π°ΡšΠ΅ ΠΎΠ²ΠΎΠ³ Ρ‡Π»Π°Π½ΠΊΠ° Π·Π°Ρ…Ρ‚Π΅Π²Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎ знањС ΠΎ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠ°, ΠΏΠ° Π²Π°ΠΌ Ρ‚ΠΎΠΏΠ»ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Π΅ΠΌΠΎ Π΄Π° ΠΏΡ€Π²ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π·Π²Π°Π½ΠΈΡ‡Π½ΠΈ ΡƒΡŸΠ±Π΅Π½ΠΈΠΊ.

ΠŸΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅ вашСг Ρ€Π°Π΄Π½ΠΎΠ³ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°

Π”Π° бистС сС ΠΈΠ³Ρ€Π°Π»ΠΈ са ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΠΌΠ° Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ, ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΠΈΡ‚Π΅ својС Ρ€Π°Π΄Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅:

  1. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠΈΡ‚Π΅ кластСр ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ 4. Наши ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ користС Π¦ΠΎΠ΄Π΅Π Π΅Π°Π΄ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π΅ (Π¦Π Π”) Π·Π° ΠΎΠ²ΠΎ, упутства Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ Π·Π° којС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΎΠ²Π΄Π΅.
  2. Након ΡˆΡ‚ΠΎ јС кластСр спрСман, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° Π½Π° њСга инсталиратС ПипСлинС ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. НС ΠΏΠ»Π°ΡˆΠΈΡ‚Π΅ сС, Π»Π°ΠΊΠΎ јС, упутства Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ ΠΎΠ²Π΄Π΅.
  3. ΠŸΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ Π’Π΅ΠΊΡ‚ΠΎΠ½ Π¦Π›Π˜ (Ρ‚ΠΊΠ½) ΠΎΠ²Π΄Π΅.
  4. ΠŸΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ Π°Π»Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ линијС Ρ†Ρ€Π΅Π°Ρ‚Π΅-Ρ€Π΅Π°Ρ†Ρ‚-Π°ΠΏΠΏ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠΎΡ˜Ρƒ Ρ›Π΅Ρ‚Π΅ Π·Π°Ρ‚ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΠΈ (ΠΎΠ²ΠΎ јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π Π΅Π°Π³ΠΎΠ²Π°Ρ‚ΠΈ).
  5. (ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ) ΠšΠ»ΠΎΠ½ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π΅ Π΄Π° бистС ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ са Π½ΠΏΠΌ инсталл, Π° Π·Π°Ρ‚ΠΈΠΌ Π½ΠΏΠΌ старт.

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρ›Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΈΠΌΠ°Ρ‚ΠΈ ΠΊ8с Ρ„ΠΎΠ»Π΄Π΅Ρ€, који Ρ›Π΅ садрТати ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ/ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Π˜ΠΠœΠ›-ΠΎΠ²Π΅ који сС користС Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ›Π΅ Π·Π°Π΄Π°Ρ†ΠΈ, Π·Π°Π΄Π°Ρ†ΠΈ кластСра, рСсурси ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ којС Ρ›Π΅ΠΌΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Ρƒ ΠΎΠ²ΠΎΠΌ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π°.

Π“Π΅Ρ‚Ρ‚ΠΈΠ½Π³ стартСд

ΠŸΡ€Π²ΠΈ ΠΊΠΎΡ€Π°ΠΊ Π·Π° наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ јС ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π½ΠΎΠ²ΠΎΠ³ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° Ρƒ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ кластСру. Назовимо овај ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅ ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜ΠΌΠΎ Π³Π° слСдСћом ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

$ oc new-project webapp-pipeline

Ово ΠΈΠΌΠ΅ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° Ρ›Π΅ сС каснијС ΠΏΠΎΡ˜Π°Π²ΠΈΡ‚ΠΈ Ρƒ ΠΊΠΎΠ΄Ρƒ, ΠΏΠ° Π°ΠΊΠΎ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π° Π³Π° Π½Π°Π·ΠΎΠ²Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° Ρƒ складу с Ρ‚ΠΈΠΌ ΡƒΡ€Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ ΠΎΠ²Π΅ Ρ‚Π°Ρ‡ΠΊΠ΅, Π½Π΅Ρ›Π΅ΠΌΠΎ ΠΈΡ›ΠΈ ΠΎΠ΄ΠΎΠ·Π³ΠΎ Π½Π°Π΄ΠΎΠ»Π΅, Π²Π΅Ρ› ΠΎΠ΄ΠΎΠ·Π΄ΠΎ ΠΏΡ€Π΅ΠΌΠ° Π³ΠΎΡ€Π΅: Ρ‚ΠΎ Ρ˜Π΅ΡΡ‚, ΠΏΡ€Π²ΠΎ Ρ›Π΅ΠΌΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ свС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ транспортСра, Π° Ρ‚Π΅ΠΊ ΠΎΠ½Π΄Π° сам транспортСр.

Π”Π°ΠΊΠ»Π΅, ΠΏΡ€Π΅ свСга...

Π—Π°Π΄Π°Ρ†ΠΈ

Π₯ајдС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ°, који Ρ›Π΅ ΠΎΠ½Π΄Π° ΠΏΠΎΠΌΠΎΡ›ΠΈ Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ нашСг Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π°. ΠŸΡ€Π²ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ - Π°ΠΏΠΏΠ»ΠΈ_манифСстс_таск - јС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Ρƒ Π˜ΠΠœΠ›-Π° ΠΎΠ½ΠΈΡ… ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ рСсурса (услуга, Ρ€Π°ΡΠΏΠΎΡ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ ΠΈ Ρ€ΡƒΡ‚Π°) који сС Π½Π°Π»Π°Π·Π΅ Ρƒ ΠΊ8с фасцикли нашС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. Π”Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ – ΡƒΠΏΠ΄Π°Ρ‚Π΅_Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌΠ΅Π½Ρ‚_таск – ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½ јС Π·Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π²Π΅Ρ› постављСнС сликС Π½Π° ΠΎΠ½Ρƒ ΠΊΠΎΡ˜Ρƒ јС ΠΊΡ€Π΅ΠΈΡ€Π°ΠΎ наш Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄.

НС Π±Ρ€ΠΈΠ½ΠΈΡ‚Π΅ Π°ΠΊΠΎ још нијС јасно. Π£ ствари, ΠΎΠ²ΠΈ Π·Π°Π΄Π°Ρ†ΠΈ су Π½Π΅ΡˆΡ‚ΠΎ ΠΏΠΎΠΏΡƒΡ‚ услуТних ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, Π° ΠΌΠΈ Ρ›Π΅ΠΌΠΎ ΠΈΡ… Π΄Π΅Ρ‚Π°Ρ™Π½ΠΈΡ˜Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚ΠΈ ΠΌΠ°Π»ΠΎ каснијС. Π—Π° сада, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΈΡ… ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml

Π—Π°Ρ‚ΠΈΠΌ, користСћи ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚ΠΊΠ½ Π¦Π›Π˜, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ›Π΅ΠΌΠΎ Π΄Π° Π»ΠΈ су Π·Π°Π΄Π°Ρ†ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ:

$ tkn task ls

NAME                AGE
apply-manifests     1 minute ago
update-deployment   1 minute ago

НапомСна: Ово су Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π·Π°Π΄Π°Ρ†ΠΈ Π·Π° ваш Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚.

Π—Π°Π΄Π°Ρ†ΠΈ кластСра

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΡΠΊΠΈ Π·Π°Π΄Π°Ρ†ΠΈ су Ρƒ основи исти ΠΊΠ°ΠΎ ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΈ Π·Π°Π΄Π°Ρ†ΠΈ. Π’ΠΎ Ρ˜Π΅ΡΡ‚, Ρ‚ΠΎ јС Π²ΠΈΡˆΠ΅ΠΊΡ€Π°Ρ‚Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΊΠΎΡ€Π°ΠΊΠ° који сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΡƒΡ˜Ρƒ Π½Π° овај ΠΈΠ»ΠΈ онај Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ. Π Π°Π·Π»ΠΈΠΊΠ° јС Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ јС Π·Π°Π΄Π°Ρ‚Π°ΠΊ кластСра доступан свуда Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ кластСра. Π”Π° бисмо Π²ΠΈΠ΄Π΅Π»ΠΈ листу Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ° кластСра који сС аутоматски ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρƒ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ додавања ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π°, ΠΏΠΎΠ½ΠΎΠ²ΠΎ Ρ›Π΅ΠΌΠΎ користити Ρ‚ΠΊΠ½ Π¦Π›Π˜ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ tkn clustertask ls

NAME                       AGE
buildah                    1 day ago
buildah-v0-10-0            1 day ago
jib-maven                  1 day ago
kn                         1 day ago
maven                      1 day ago
openshift-client           1 day ago
openshift-client-v0-10-0   1 day ago
s2i                        1 day ago
s2i-go                     1 day ago
s2i-go-v0-10-0             1 day ago
s2i-java-11                1 day ago
s2i-java-11-v0-10-0        1 day ago
s2i-java-8                 1 day ago
s2i-java-8-v0-10-0         1 day ago
s2i-nodejs                 1 day ago
s2i-nodejs-v0-10-0         1 day ago
s2i-perl                   1 day ago
s2i-perl-v0-10-0           1 day ago
s2i-php                    1 day ago
s2i-php-v0-10-0            1 day ago
s2i-python-3               1 day ago
s2i-python-3-v0-10-0       1 day ago
s2i-ruby                   1 day ago
s2i-ruby-v0-10-0           1 day ago
s2i-v0-10-0                1 day ago

Π‘Π°Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ Π΄Π²Π° кластСр Π·Π°Π΄Π°Ρ‚ΠΊΠ°. ΠŸΡ€Π²ΠΈ Ρ›Π΅ гСнСрисати Π‘2И слику ΠΈ послати јС Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ рСгистар; Π΄Ρ€ΡƒΠ³ΠΈ јС Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌΠΎ Π½Π°ΡˆΡƒ слику засновану Π½Π° ΠΠ“Π˜ΠΠšΠ‘-Ρƒ, користСћи Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠΎΡ˜Ρƒ смо Π²Π΅Ρ› Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΎ ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜.

ΠšΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΈ ΠΏΠΎΡˆΠ°Ρ™ΠΈΡ‚Π΅ слику

Када ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ ΠΏΡ€Π²ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ, ΠΏΠΎΠ½ΠΎΠ²ΠΈΡ›Π΅ΠΌΠΎ ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ смо Π²Π΅Ρ› ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ Ρƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΎ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ склоповима. ΠŸΠΎΠ΄ΡΠ΅Ρ‚ΠΈΠΌΠΎ сС Π΄Π° смо користили Π‘2И слику (ΡƒΠ±ΠΈ8-с2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ) Π΄Π° β€žΠ½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎβ€œ Π½Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΈ Π·Π°Π²Ρ€ΡˆΠΈΠ»ΠΈ са сликом ΡƒΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Π½ΠΎΠΌ Ρƒ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΎΠΌ рСгистру. Π‘Π°Π΄Π° Ρ›Π΅ΠΌΠΎ користити ΠΎΠ²Ρƒ слику Π‘2И Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ Π”ΠΎΡ†ΠΊΠ΅Ρ€Π€ΠΈΠ»Π΅ Π·Π° Π½Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, Π° Π·Π°Ρ‚ΠΈΠΌ Ρ›Π΅ΠΌΠΎ користити Π‘ΡƒΠΈΠ»Π΄Π°Ρ… Π΄Π° ΡƒΡ€Π°Π΄ΠΈΠΌΠΎ стварну ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ ΠΈ Π³ΡƒΡ€Π½Π΅ΠΌΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚ΡƒΡ˜ΡƒΡ›Ρƒ слику Ρƒ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈ рСгистар, ΠΏΠΎΡˆΡ‚ΠΎ јС Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²ΠΎ ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ€Π°Π΄ΠΈ ΠΊΠ°Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ својС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ користСћи НодСБхифт .

Како смо свС ΠΎΠ²ΠΎ Π·Π½Π°Π»ΠΈ, ΠΏΠΈΡ‚Π°Ρ‚Π΅ сС? Од Π·Π²Π°Π½ΠΈΡ‡Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π·Π²Π°Π½ΠΈΡ‡Π½ΠΎΠ³ НодС.јс, само смо Π³Π° ΠΊΠΎΠΏΠΈΡ€Π°Π»ΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π·Π° сСбС.

Π”Π°ΠΊΠ»Π΅, сада Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚Π°ΠΊ кластСра с2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml

НСћСмо ΠΎΠ²ΠΎ Π΄Π΅Ρ‚Π°Ρ™Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ΠΈ, Π²Π΅Ρ› Ρ›Π΅ΠΌΠΎ сС фокусирати само Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ ОУВПУВ_Π”Π˜Π :

params:
      - name: OUTPUT_DIR
        description: The location of the build output directory
        default: build

ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ, овај ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ јС јСднак Π±ΡƒΠΈΠ»Π΄-Ρƒ, Π³Π΄Π΅ Π Π΅Π°Ρ†Ρ‚ ставља састављСни ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜. Π”Ρ€ΡƒΠ³ΠΈ ΠΎΠΊΠ²ΠΈΡ€ΠΈ користС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°ΡšΠ΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Π•ΠΌΠ±Π΅Ρ€Ρƒ јС дист. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ нашСг ΠΏΡ€Π²ΠΎΠ³ Π·Π°Π΄Π°Ρ‚ΠΊΠ° кластСра Π±ΠΈΡ›Π΅ слика која садрТи Π₯Π’ΠœΠ›, ΠˆΠ°Π²Π°Π‘Ρ†Ρ€ΠΈΠΏΡ‚ ΠΈ Π¦Π‘Π‘ којС смо ΠΏΡ€ΠΈΠΊΡƒΠΏΠΈΠ»ΠΈ.

НаправитС слику засновану Π½Π° ΠΠ“Π˜ΠΠšΠ‘-Ρƒ

Π¨Ρ‚ΠΎ сС Ρ‚ΠΈΡ‡Π΅ нашСг Π΄Ρ€ΡƒΠ³ΠΎΠ³ Π·Π°Π΄Π°Ρ‚ΠΊΠ° кластСра, Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ слику засновану Π½Π° ΠΠ“Π˜ΠΠšΠ‘-Ρƒ, користСћи ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΊΠΎΡ˜Ρƒ смо Π²Π΅Ρ› Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ. Π£ ΡΡƒΡˆΡ‚ΠΈΠ½ΠΈ, ΠΎΠ²ΠΎ јС Π΄Π΅ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ ΠΎΠ΄Π΅Ρ™ΠΊΠ° Π³Π΄Π΅ смо ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΡƒΠ»Π°Π½Ρ‡Π°Π½Π΅ Π³Ρ€Π°Π΄ΡšΠ΅.

Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΌΠΈ Ρ›Π΅ΠΌΠΎ - ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ исто ΠΊΠ°ΠΎ ΠΌΠ°Π»ΠΎΠΏΡ€Π΅ - ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ кластСр Π·Π°Π΄Π°Ρ‚Π°ΠΊ Π²Π΅Π±Π°ΠΏΠΏ-Π±ΡƒΠΈΠ»Π΄-Ρ€ΡƒΠ½Ρ‚ΠΈΠΌΠ΅:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΎΠ²ΠΈΡ… Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ° кластСра, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π΄Π° ΠΎΠ½ Π½Π΅ Π½Π°Π²ΠΎΠ΄ΠΈ Π“ΠΈΡ‚ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π΅ са којим Ρ€Π°Π΄ΠΈΠΌΠΎ Π½ΠΈΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π° слика којС ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ. Ми само спСцифицирамо ΡˆΡ‚Π° Ρ‚Π°Ρ‡Π½ΠΎ прСносимо Ρƒ Π“ΠΈΡ‚, ΠΈΠ»ΠΈ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Ρƒ слику Π³Π΄Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΡƒΠ΄Π΅ ΠΈΠ·Π»Π°Π·Π½Π° ΠΊΠΎΠ½Π°Ρ‡Π½Π° слика. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° сС ΠΎΠ²ΠΈ Π·Π°Π΄Π°Ρ†ΠΈ кластСра ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ½ΠΎΠ²ΠΎ користити ΠΊΠ°Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ°.

И ΠΎΠ²Π΄Π΅ Π³Ρ€Π°Ρ†ΠΈΠΎΠ·Π½ΠΎ ΠΏΡ€Π΅Π»Π°Π·ΠΈΠΌΠΎ Π½Π° слСдСћу Ρ‚Π°Ρ‡ΠΊΡƒ...

РСсурси

Π”Π°ΠΊΠ»Π΅, ΠΏΠΎΡˆΡ‚ΠΎ, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ смо ΡƒΠΏΡ€Π°Π²ΠΎ Ρ€Π΅ΠΊΠ»ΠΈ, Π·Π°Π΄Π°Ρ†ΠΈ кластСра Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΡƒΠ΄Ρƒ ΡˆΡ‚ΠΎ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ ΠΎΠΏΡˆΡ‚ΠΈΡ˜ΠΈ, ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ рСсурсС који Ρ›Π΅ сС користити ΠΊΠ°ΠΎ ΡƒΠ»Π°Π· (Π“ΠΈΡ‚ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π΅) ΠΈ ΠΊΠ°ΠΎ ΠΈΠ·Π»Π°Π· (ΠΊΠΎΠ½Π°Ρ‡Π½Π΅ сликС). ΠŸΡ€Π²ΠΈ рСсурс који Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° јС Π“ΠΈΡ‚, Π³Π΄Π΅ сС Π½Π°Π»Π°Π·ΠΈ наша Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΎΡ‚ΠΏΡ€ΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:

# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: web-application-repo
spec:
  type: git
  params:
    - name: url
      value: https://github.com/nodeshift-starters/react-pipeline-example
    - name: revision
      value: master

ОвдС ΠŸΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Π Π΅ΡΠΎΡƒΡ€Ρ†Π΅ јС Ρ‚ΠΈΠΏΠ° Π³ΠΈΡ‚. Π£Ρ€Π» ΠΊΡ™ΡƒΡ‡ Ρƒ ΠΎΠ΄Π΅Ρ™ΠΊΡƒ парамс ΡƒΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π΅ ΠΈ Π½Π°Π²ΠΎΠ΄ΠΈ Π³Π»Π°Π²Π½Ρƒ Π³Ρ€Π°Π½Ρƒ (ΠΎΠ²ΠΎ јС ΠΎΠΏΡ†ΠΈΠΎΠ½ΠΎ, Π°Π»ΠΈ ΠΌΠΈ Π³Π° пишСмо Ρ€Π°Π΄ΠΈ потпуности).

Π‘Π°Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ рСсурс Π·Π° слику Π³Π΄Π΅ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ сачувани Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π·Π°Π΄Π°Ρ‚ΠΊΠ° с2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ, ΠΎΠ²ΠΎ сС Ρ€Π°Π΄ΠΈ ΠΎΠ²Π°ΠΊΠΎ:

# This resource is the result of running "npm run build",  the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: built-web-application-image
spec:
  type: image
  params:
    - name: url
      value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest

ОвдС јС ΠŸΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Π Π΅ΡΠΎΡƒΡ€Ρ†Π΅ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ°Π³Π΅, Π° врСдност ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΡ€Π» ΡƒΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ИмагС РСгистри, посСбно онај који сС Π½Π°Π»Π°Π·ΠΈ Ρƒ имСнском простору Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅-Π°. НС Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠ²ΠΎ подСшавањС Π°ΠΊΠΎ користитС Π΄Ρ€ΡƒΠ³ΠΈ имСнски простор.

И Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ, послСдњи рСсурс који Π½Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Π½ Π±ΠΈΡ›Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ°Π³Π΅ ΠΈ ΠΎΠ²ΠΎ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Π°Ρ‡Π½Π° ΠΠ“Π˜ΠΠšΠ‘ слика која Ρ›Π΅ сС Π·Π°Ρ‚ΠΈΠΌ користити Ρ‚ΠΎΠΊΠΎΠΌ ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ°:

# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: runtime-web-application-image
spec:
  type: image
  params:
    - name: url
      value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest

ΠžΠΏΠ΅Ρ‚, ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌΡƒ Π΄Π° овај рСсурс ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚ΠΈ слику Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΎΠΌ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ рСгистру Ρƒ имСнском простору Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅-Π°.

Π”Π° бисмо ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ свС ΠΎΠ²Π΅ рСсурсС одјСдном, користимо ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ†Ρ€Π΅Π°Ρ‚Π΅:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π±ΠΈΡ‚ΠΈ сигурни Π΄Π° су рСсурси ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ ΠΎΠ²Π°ΠΊΠΎ:

$ tkn resource ls

Вранспортни Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄

Π‘Π°Π΄Π° ΠΊΠ°Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ свС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° саставимо Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ ΠΎΠ΄ ΡšΠΈΡ… Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅ΠΌΠΎ Π³Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ слСдСћом ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml

Али ΠΏΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ ΠΎΠ²Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, поглСдајмо ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. ΠŸΡ€Π²ΠΎ јС ΠΈΠΌΠ΅:

apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
  name: build-and-deploy-react

Π—Π°Ρ‚ΠΈΠΌ Ρƒ ΠΎΠ΄Π΅Ρ™ΠΊΡƒ са ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ рСсурса којС смо ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ Ρ€Π°Π½ΠΈΡ˜Π΅:

spec:
  resources:
    - name: web-application-repo
      type: git
    - name: built-web-application-image
      type: image
    - name: runtime-web-application-image
      type: image

Π—Π°Ρ‚ΠΈΠΌ ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ којС наш Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π°Π²Ρ€ΡˆΠΈ. ΠŸΡ€Π΅ свСга, ΠΌΠΎΡ€Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ с2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ који смо Π²Π΅Ρ› ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ:

tasks:
    - name: build-web-application
      taskRef:
        name: s2i-web-app
        kind: ClusterTask

Овај Π·Π°Π΄Π°Ρ‚Π°ΠΊ ΡƒΠ·ΠΈΠΌΠ° ΡƒΠ»Π°Π·Π½Π΅ (Π³ΠΈΡ€ рСсурс) ΠΈ ΠΈΠ·Π»Π°Π·Π½Π΅ (ΠΈΠ·Π³Ρ€Π°Ρ’Π΅Π½Π΅-Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅-рСсурс-ΠΈΠΌΠ°Π³Π΅) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅. Π’Π°ΠΊΠΎΡ’Π΅ ΠΌΡƒ ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ΠΌΠΎ посСбан ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ Ρ‚Π°ΠΊΠΎ Π΄Π° Π½Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΡƒΡ˜Π΅ Π’Π›Π‘ ΠΏΠΎΡˆΡ‚ΠΎ користимо самопотписанС сСртификатС:

resources:
        inputs:
          - name: source
            resource: web-application-repo
        outputs:
          - name: image
            resource: built-web-application-image
      params:
        - name: TLSVERIFY
          value: "false"

Π‘Π»Π΅Π΄Π΅Ρ›ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ јС скоро исти, само ΡˆΡ‚ΠΎ сС ΠΎΠ²Π΄Π΅ Π·ΠΎΠ²Π΅ Π·Π°Π΄Π°Ρ‚Π°ΠΊ кластСра Π²Π΅Π±Π°ΠΏΠΏ-Π±ΡƒΠΈΠ»Π΄-Ρ€ΡƒΠ½Ρ‚ΠΈΠΌΠ΅ који смо Π²Π΅Ρ› ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ:

name: build-runtime-image
    taskRef:
      name: webapp-build-runtime
      kind: ClusterTask

Као ΠΈ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ Π·Π°Π΄Π°Ρ‚ΠΊΠ°, ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ΠΌΠΎ рСсурс, Π°Π»ΠΈ сада јС Ρ‚ΠΎ ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Π°-Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°-слика (ΠΈΠ·Π»Π°Π· нашСг ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ Π·Π°Π΄Π°Ρ‚ΠΊΠ°). И ΠΊΠ°ΠΎ ΠΈΠ·Π»Π°Π· ΠΏΠΎΠ½ΠΎΠ²ΠΎ постављамо слику. ΠŸΠΎΡˆΡ‚ΠΎ сС овај Π·Π°Π΄Π°Ρ‚Π°ΠΊ ΠΌΠΎΡ€Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚ΠΈ Π½Π°ΠΊΠΎΠ½ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³, додајСмо ΠΏΠΎΡ™Π΅ рунАфтСр:

resources:
        inputs:
          - name: image
            resource: built-web-application-image
        outputs:
          - name: image
            resource: runtime-web-application-image
        params:
        - name: TLSVERIFY
          value: "false"
      runAfter:
        - build-web-application

Π‘Π»Π΅Π΄Π΅Ρ›Π° Π΄Π²Π° Π·Π°Π΄Π°Ρ‚ΠΊΠ° су ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ сСрвиса, Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ° ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ Π˜ΠΠœΠ› Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° којС ΠΆΠΈΠ²Π΅ Ρƒ ΠΊ8с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΡƒ нашС Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, ΠΊΠ°ΠΎ ΠΈ Π·Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ° Π½ΠΎΠ²ΠΈΡ… слика. Ова Π΄Π²Π° Π·Π°Π΄Π°Ρ‚ΠΊΠ° кластСра дСфинисали смо Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΡƒ Ρ‡Π»Π°Π½ΠΊΠ°.

ΠŸΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ транспортСра

Π”Π°ΠΊΠ»Π΅, сви Π΄Π΅Π»ΠΎΠ²ΠΈ нашСг Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π° су ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ, Π° ΠΌΠΈ Ρ›Π΅ΠΌΠΎ Π³Π° ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ слСдСћом ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

$ tkn pipeline start build-and-deploy-react

Π£ овој Ρ„Π°Π·ΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° линија сС користи ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΈΠ·Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ рСсурсС ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° сваки њСн Π·Π°Ρ…Ρ‚Π΅Π²: Π·Π° Π³ΠΈΡ‚ рСсурс ΠΈΠ·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡ†Π°Ρ‚ΠΈΠΎΠ½-Ρ€Π΅ΠΏΠΎ, Π·Π°Ρ‚ΠΈΠΌ Π·Π° ΠΏΡ€Π²ΠΈ рСсурс сликС, ΠΈΠ·Π³Ρ€Π°Ρ’Π΅Π½-Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡ†Π°Ρ‚ΠΈΠΎΠ½ -ΠΈΠΌΠ°Π³Π΅, ΠΈ ΠΊΠΎΠ½Π°Ρ‡Π½ΠΎ, Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ рСсурс сликС –рунтимС-Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡ†Π°Ρ‚ΠΈΠΎΠ½-ΠΈΠΌΠ°Π³Π΅:

? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr

Π‘Π°Π΄Π° Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ статус Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΡ›Ρƒ слСдСћС ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

$ tkn pipeline logs -f

Када јС Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° јС распорСђСна, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Π°Ρ‚Ρ€Π°ΠΆΠΈΡ‚ΠΈ ΠΎΠ±Ρ˜Π°Π²Ρ™Π΅Π½Ρƒ Ρ€ΡƒΡ‚Ρƒ са слСдСћом ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

$ oc get route react-pipeline-example --template='http://{{.spec.host}}'

Π—Π° Π²Π΅Ρ›Ρƒ Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚ΠΈ наш Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ Ρƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π΅ Π²Π΅Π± ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ Ρƒ ​​одСљку Π¦Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° сл. 1.

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Π€ΠΈΠ³. 1. ΠŸΡ€Π΅Π³Π»Π΅Π΄ Ρ‚Π΅ΠΊΡƒΡ›ΠΈΡ… Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄Π°.

Кликом Π½Π° Ρ‚Π΅ΠΊΡƒΡ›ΠΈ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ сС Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ Π΄Π΅Ρ‚Π°Ρ™Π΅, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° слици 2.

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

ΠŸΠΈΡ€ΠΈΠ½Π°Ρ‡. 2. Π”ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ гасоводу.

Након вишС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ ΠΏΡ€ΠΈΠΊΠ°Π·Ρƒ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° сл.3.

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

Π‘Π»ΠΈΠΊΠ° 3. Лансирана ΠΌΠ°Ρ…ΡƒΠ½Π°.

Кликом Π½Π° ΠΊΡ€ΡƒΠΆΠΈΡ› Ρƒ Π³ΠΎΡ€ΡšΠ΅ΠΌ дСсном ΡƒΠ³Π»Ρƒ ΠΈΠΊΠΎΠ½Π΅ ΠΎΡ‚Π²Π°Ρ€Π° сС наша Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° слици 4.

ΠœΠΎΠ΄Π΅Ρ€Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ, Π΄Π΅ΠΎ 3: ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ΠΊΠ°ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ

ΠŸΠΈΡ€ΠΈΠ½Π°Ρ‡. 4. ΠŸΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ Π Π΅Π°Ρ†Ρ‚ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

Π”Π°ΠΊΠ»Π΅, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ смо ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ сСрвСр Π·Π° Π²Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π½Π° ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚-Ρƒ ΠΈ Π΄Π° Π³Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΡƒΡ˜Π΅Ρ‚Π΅ са Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΌ систСмом Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. Π’Π°ΠΊΠΎΡ’Π΅ смо ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° симулирамо шаблон Π»Π°Π½Ρ‡Π°Π½Π΅ Π³Ρ€Π°Π΄ΡšΠ΅ користСћи ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ ПипСлинСс. Π‘Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π° ΠΈΠ· ΠΎΠ²ΠΎΠ³ Ρ‡Π»Π°Π½ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΎΠ²Π΄Π΅.

Π”ΠΎΠ΄Π°Ρ‚Π½ΠΈ рСсурси (ЕН)

НајавС ΠΏΡ€Π΅Π΄ΡΡ‚ΠΎΡ˜Π΅Ρ›ΠΈΡ… Π²Π΅Π±ΠΈΠ½Π°Ρ€Π°

ΠŸΠΎΡ‡ΠΈΡšΠ΅ΠΌΠΎ ΡΠ΅Ρ€ΠΈΡ˜Ρƒ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° Ρƒ ΠΏΠ΅Ρ‚Π°ΠΊ ΠΎ Π΄ΠΎΠΌΠ°Ρ›Π΅ΠΌ искуству користСћи Π Π΅Π΄ Π₯Π°Ρ‚ ΠžΠΏΠ΅Π½Π‘Ρ…ΠΈΡ„Ρ‚ Π¦ΠΎΠ½Ρ‚Π°ΠΈΠ½Π΅Ρ€ ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ:

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

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