เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™เปƒเบ™ blog เบ™เบตเป‰! เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ•เบญเบšเบ—เบตเบชเบฒเบกเปƒเบ™เบŠเบธเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบงเบฑเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ Red Hat OpenShift.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เปƒเบ™เบชเบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบš S2I เปƒเบซเบกเปˆเบžเป‰เบญเบกเบเบฑเบšเบฎเบนเบšเบžเบฒเบš HTTP เบญเบญเบเบˆเบฒเบเบŠเบฑเป‰เบ™เบงเบฒเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เป€เบŠเบฑเปˆเบ™ NGINX, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”. .

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบŠเบตเบŸเป€เบงเบตเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เป€เบงเบ—เบต OpenShift เปเบฅเบฐ synchronize เบกเบฑเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบฅเบฐเบเบฑเบ‡เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš OpenShift Pipelines เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡.

OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเปเบฅเป‰เบงเปƒเบ™ เบ•เบญเบšเบ—เปเบฒเบญเบดเบ”, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ "เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ" เบ—เบตเปˆเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เป€เบกเบทเปˆเบญเบžเบงเบเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.

เปƒเบ™เบเบญเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบ—เบตเปˆเบชเบธเบ”, เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง "เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ" เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เปƒเบซเป‰เป€เบญเบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ React เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบเบทเบญเบšเบ”เบฝเบงเบเบฑเบ™เปƒเบŠเป‰เปƒเบ™เบเบญเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ "dev server" เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ React เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบชเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ npm run start

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹, เปƒเบ™โ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบก terminal เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบซเบฑเบ™โ€‹เบšเบฒเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบตเป‰โ€‹:

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบตเบ”เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒ, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบงเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.

เบ•เบปเบเบฅเบปเบ‡, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡เบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เป‚เบซเบกเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบ•เปˆเบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ™เบฅเบธเบ”เบฝเบงเบเบฑเบ™เปƒเบ™ OpenShift?

เป€เบŠเบตเบšเป€เบงเบตเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™ OpenShift

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบˆเบทเปˆ, เปƒเบ™ เบ•เบญเบšเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เป„เบฅเบเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบฎเบนเบšเบžเบฒเบš S2I เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป‚เบกเบ”เบนเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เปƒเบเป‰เบŠเบดเบ” เปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš เบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบกเบตเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก $NPM_RUN, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ nodeshift เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

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

เบซเบกเบฒเบเป€เบซเบ”: เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบซเบเปเป‰เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบปเปˆเบงเป„เบ›.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก NPM_RUN เปƒเบซเป‰เบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบšเบญเบเป€เบงเบฅเบฒเปเบฅเปˆเบ™เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบชเบฑเป‰เบ™เบ”เป‰เบฒเบ, เป€เบŠเบดเปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบŠเบตเบšเป€เบงเบต React เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ™ OpenShift pod เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบšเบดเปˆเบ‡โ€‹เป„เบกเป‰โ€‹เบขเบทเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เปเบฅเปˆเบ™โ€‹, เบกเบฑเบ™โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เปเบ™เปˆเบ™เบญเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบˆเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” synchronize เบฅเบฐเบซเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบ•เปˆเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ.

เบเบฒเบ™เบŠเบดเบ‡เป‚เบ„เบฃเป„เบ™เป„เบฅเบเบฐเป„เบ เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เป‚เบŠเบเบ”เบต, nodeshift เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™ synchronization เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ watch เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ›เบญเบ”เป„เบž:

$ npx nodeshift watch

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบš pod เปเบฅเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบเบฒเบ™ synchronization เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบš cluster เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบˆเบฐเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เปเบฅเบฐเป„เบŸเบฅเปŒเปƒเบ™เบฅเบฐเบšเบปเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เป„เบŸเบฅเปŒ src/App.js เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบฅเบฐเบšเบปเบšเบˆเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ„เบฑเบ”เบฅเบญเบเบžเบงเบเบกเบฑเบ™เป„เบ›เบ—เบตเปˆเบเบธเปˆเบกเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš, เปƒเบซเป‰เบชเบฐเปเบ”เบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบท:

$ 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

เบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบกเบ‡เปเบกเปˆเบ™เป€เบ›เบฑเบ™ abstraction เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ oc rsync, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ. เบ—เบตเปˆเบ™เบตเป‰.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบš React, เปเบ•เปˆเบงเบดเบ—เบตเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ„เบทเบเบฑเบ™เบญเป‰เบญเบเบ•เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบเบญเบšเบญเบทเปˆเบ™เป†, เบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก NPM_RUN เบ•เบฒเบกเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™.
โ€ƒ

Openshift Pipelines

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ OpenShift Pipelines เปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰.

OpenShift Pipelines เปเบกเปˆเบ™เบซเบเบฑเบ‡

OpenShift Pipelines เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡ CI/CD cloud-native CI/CD เบ—เบตเปˆเบญเบญเบเปเบšเบšเบกเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เบ—เปเปˆเป‚เบ”เบเปƒเบŠเป‰ Tekton. Tekton เป€เบ›เบฑเบ™เบเบญเบšเป‚เบญเป€เบžเบ™เบŠเบญเบ” Kubernetes-native CI/CD เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เป€เบงเบ—เบตเบ•เปˆเบฒเบ‡เป† (Kubernetes, serverless, virtual machines, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เป‚เบ”เบเบซเบเปเป‰เบกเบฒเบˆเบฒเบเบŠเบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.

เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบฎเบนเป‰เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบš Pipelines, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ—เปเบฒเบญเบดเบ” เบ›เบทเป‰เบกเปเบšเบšเบฎเบฝเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™

เป€เบžเบทเปˆเบญเบซเบผเบตเป‰เบ™เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ” เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฐเบเบฝเบกเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

  1. เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบธเปˆเบก OpenShift 4. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ CodeReady Containers (CRD) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰. เบ—เบตเปˆเบ™เบตเป‰.
  2. เบซเบผเบฑเบ‡เบˆเบฒเบ cluster เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบก, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Pipeline Operator เปƒเบชเปˆเบกเบฑเบ™. เบขเปˆเบฒเบขเป‰เบฒเบ™, เบกเบฑเบ™เบ‡เปˆเบฒเบ, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เบ—เบตเปˆเบ™เบตเป‰.
  3. เบ”เบฒเบงเป‚เบซเบฅเบ” Tekton CLI (tkn) เบ—เบตเปˆเบ™เบตเป‰.
  4. เปเบฅเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบฒเบเบ„เบณเบชเบฑเปˆเบ‡ create-react-app เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบˆเบฐเบ™เบณเปƒเบŠเป‰ (เบ™เบตเป‰เป€เบ›เบฑเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ React).
  5. (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) Clone repository เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ npm เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ npm เป€เบฅเบตเปˆเบก.

เบ„เบฑเบ‡เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเบฑเบ‡เบˆเบฐเบกเบตเป‚เบŸเบ™เป€เบ”เบต k8s, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบกเบต Kubernetes/OpenShift YAMLs เบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เบˆเบฐเบกเบต Tasks, ClusterTasks, Resources เปเบฅเบฐ Pipelines เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เปƒเบ™เบ™เบตเป‰ เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™.

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบกเปˆเปƒเบ™เบเบธเปˆเบก OpenShift. เปƒเบซเป‰เป‚เบ—เบซเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰ webapp-pipeline เปเบฅเบฐเบชเป‰เบฒเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ oc new-project webapp-pipeline

เบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ•เปเปˆเบกเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบกเบฑเบ™เบขเปˆเบฒเบ‡เบญเบทเปˆเบ™, เบขเปˆเบฒเบฅเบทเบกเปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก. เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบˆเบธเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบ‚เบถเป‰เบ™เป€เบ—เบดเบ‡เบฅเบปเบ‡, เปเบ•เปˆเบฅเบธเปˆเบกเบชเบธเบ”: เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบฅเปเบฒเบฅเบฝเบ‡, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ conveyor เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ” ...

เบงเบฝเบเบ‡เบฒเบ™

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™เบชเบญเบ‡เบขเปˆเบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบฒเบเปƒเบ™เบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบงเบฝเบเบ‡เบฒเบ™เบ—เปเบฒเบญเบดเบ” - apply_manifests_task - เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ YAML เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Kubernetes เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™ (เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡) เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต k8s เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเบชเบญเบ‡ โ€“ update_deployment_task โ€“ เปเบกเปˆเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปƒเบŠเป‰เปเบฅเป‰เบงเบเบฑเบšเบญเบฑเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบขเปˆเบฒเบเบฑเบ‡เบงเบปเบ™เบ–เป‰เบฒเบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบซเบผเบฒเบ. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบงเบฝเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบกเบฒ. เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเป‰เบฒเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ:

$ 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 CLI, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™:

$ tkn task ls

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

เปเบฒเบเป€เบซเบ”: เบ™เบตเป‰เปเบกเปˆเบ™เบงเบฝเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบชเบณเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบก

เบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบกเปเบกเปˆเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เป„เบ”เป‰เบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเบฐเป€เบžเบฒเบฐ. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเปเบกเปˆเบ™เบกเบตเบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เบžเบฒเบเปƒเบ™เบเบธเปˆเบก. เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบฅเบฒเบเบŠเบทเปˆเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบก Pipeline Operator, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ tkn CLI เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡:

$ 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

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบก. เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš S2I เปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™เป„เบ›เบเบฑเบ‡เบšเบฑเบ™เบŠเบต OpenShift เบžเบฒเบเปƒเบ™; เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ NGINX, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เป€เบ™เบทเป‰เบญเบซเบฒ.

เบชเป‰เบฒเบ‡โ€‹เปเบฅเบฐโ€‹เบชเบปเปˆเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบฅเป‰เบงเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡. เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบš S2I (ubi8-s2i-web-app) เป€เบžเบทเปˆเบญ "เบชเป‰เบฒเบ‡" เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เบ”เป‰เบงเบเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ OpenShift เบžเบฒเบเปƒเบ™. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบฏเป€เบงเบฑเบš S2I เบ™เบตเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ DockerFile เบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบฏเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰ Buildah เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบปเบงเบˆเบดเบ‡เปเบฅเบฐเบŠเบธเบเบ”เบฑเบ™เปƒเบซเป‰เบฎเบนเบšเบžเบฒเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ›เบชเบนเปˆ OpenShift เบฅเบตเบˆเบดเบ”เบŠเบตเบžเบฒเบเปƒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆ OpenShift เป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ NodeShift. .

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบฎเบนเป‰โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เปเบ™เบงโ€‹เปƒเบ”โ€‹, เบ—เปˆเบฒเบ™โ€‹เบ–เบฒเบกโ€‹? เบˆเบฒเบ เบชเบฐเบšเบฑเบšเบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡ Node.js เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเบ”เบฅเบญเบเบกเบฑเบ™เปเบฅเบฐเบ”เบฑเบ”เปเบ›เบ‡เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ s2i-web-app cluster task:

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

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบงเบดเป€เบ„เบฒเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ™เบตเป‰, เปเบ•เปˆเบˆเบฐเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต OUTPUT_DIR เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™:

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

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เบ—เบตเปˆ React เป€เบญเบปเบฒเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบ›เบฐเบเบญเบš. เบเบญเบšเบญเบทเปˆเบ™เป†เปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ Ember เบกเบฑเบ™เบซเปˆเบฒเบ‡เป„เบ. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบกเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบกเบต HTML, JavaScript, เปเบฅเบฐ CSS เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒ.

เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ NGINX

เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบกเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ NGINX เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เป‚เบ”เบเบ™เปเบฒเปƒเบŠเป‰เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เปเบฅเป‰เบง. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบฒเบเบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบšเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ - เบ„เบทเบเบฑเบ™เบเบฑเบšเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ - เบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบธเปˆเบก webapp-build-runtime:

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

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบฅเบฐเบšเบธเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบผเบทเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบฅเบฐเบšเบธเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป‚เบญเบ™เป„เบ›เบซเบฒ Git, เบซเบผเบทเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ—เบตเปˆเบฎเบนเบšเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบญเบทเปˆเบ™.

เปเบฅเบฐเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบˆเบธเบ”เบ•เปเปˆเป„เบ›เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก ...

เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบงเบปเป‰เบฒ, เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ—เบปเปˆเบงเป„เบ›เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™ (เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git) เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” (เบฎเบนเบšเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบ). เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™ Git, เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเป„เบชเบขเบนเปˆ, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

# 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

เบ—เบตเปˆเบ™เบตเป‰ PipelineResource เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ” git. เบฅเบฐเบซเบฑเบ” url เปƒเบ™เบžเบฒเบ params เบŠเบตเป‰เป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบชเบฐเป€เบžเบฒเบฐเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš (เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™).

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™ s2i-web-app เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

# 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

เบ—เบตเปˆเบ™เบตเป‰ PipelineResource เปเบกเปˆเบ™เบฎเบนเบšเบžเบฒเบšเบ›เบฐเป€เบžเบ”, เปเบฅเบฐเบ„เปˆเบฒเบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต url เบŠเบตเป‰เป„เบ›เบซเบฒ OpenShift Image Registry เบžเบฒเบเปƒเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ webapp-pipeline namespace. เบขเปˆเบฒเบฅเบทเบกเบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ namespace เบญเบทเปˆเบ™.

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบšเบ›เบฐเป€เบžเบ”เปเบฅเบฐเบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบš NGINX เบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”:

# 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

เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ™เบตเป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฎเบนเบšเบžเบฒเบšเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ OpenShift เบžเบฒเบเปƒเบ™เบขเบนเปˆเปƒเบ™ namespace webapp-pipeline.

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเป‰เบฒเบ‡:

$ 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 เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰:

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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบกเบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™ s2i-web-app เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เปเบฅเป‰เบง:

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

เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ (เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ gir) เปเบฅเบฐเบœเบปเบ™เบœเบฐเบฅเบดเบ” (built-web-application-image resource) เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบœเปˆเบฒเบ™เบกเบฑเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบฑเบ™เบเบงเบ”เบชเบญเบš TLS เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบเบฒเบ™เป€เบŠเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡:

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

เบงเบฝเบเบ‡เบฒเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™, เบžเบฝเบ‡เปเบ•เปˆเบ—เบตเปˆเบ™เบตเป‰ webapp-build-runtime cluster เบงเบฝเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เปเบฅเป‰เบงเป€เบญเบตเป‰เบ™เบงเปˆเบฒ:

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

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบœเปˆเบฒเบ™เปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบงเบฑเบš - เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ - เบฎเบนเบšเบžเบฒเบš (เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ). เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเบžเบฒเบš. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบญเบฑเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก runAfter:

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

เบงเบฝเบเบ‡เบฒเบ™เบชเบญเบ‡เบญเบฑเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป„เบŸเบฅเปŒ YAML เบ—เบตเปˆเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต k8s เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบเบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปƒเบซเบกเปˆ. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบชเบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบเบธเปˆเบกเบ™เบตเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก.

เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ conveyor เป„เบ”เป‰

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบธเบเบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบกเบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ tkn pipeline start build-and-deploy-react

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบทเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบกเบฑเบ™: เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ git เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบ web-application-repo, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฎเบนเบšเบžเบฒเบšเบ—เปเบฒเบญเบดเบ” - build-web-application -image, เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบเบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเบชเบญเบ‡ -runtime-web-application-image:

? 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}}'

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เป‚เบซเบกเบ”เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ web console เปƒเบ™เบžเบฒเบ เบ—เปเปˆ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบš. 1.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

Fig.1. เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบ‚เบญเบ‡เบ—เปเปˆเปเบฅเปˆเบ™.

เบเบฒเบ™เบ„เบฅเบดเบเปƒเบชเปˆเบ—เปเปˆเปเบฅเปˆเบ™เบชเบฐเปเบ”เบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบš 2.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เป€เบ‚เบปเป‰เบฒ. 2. เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบ—เปเปˆ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบกเบธเบกเป€เบšเบดเปˆเบ‡ Topology, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™ Fig.3.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

Fig 3. เบเบฑเบเป€เบ›เบตเบ”เบ•เบปเบง.

เบเบฒเบ™เบ„เบฅเบดเบเปƒเบชเปˆเบฎเบนเบšเบงเบปเบ‡เบกเบปเบ™เบขเบนเปˆเปƒเบ™เบกเบธเบกเบ‚เบงเบฒเป€เบ—เบดเบ‡เบ‚เบญเบ‡เป„เบญเบ„เบญเบ™เป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบšเบ—เบต 4.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™ OpenShift, เบชเปˆเบงเบ™เบ—เบต 3: OpenShift เป€เบ›เบฑเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐ OpenShift Pipelines

เป€เบ‚เบปเป‰เบฒ. 4. เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React.

เบชเบฐเบซเบฅเบธเบš

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™ OpenShift เปเบฅเบฐ synchronize เบกเบฑเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบกเปˆเปเบšเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เป‚เบ”เบเปƒเบŠเป‰ OpenShift Pipelines. เบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบฑเบ‡เปเบปเบ”เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰ เบ—เบตเปˆเบ™เบตเป‰.

เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก (EN)

เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡ webinars เบ—เบตเปˆเบˆเบฐเบกเบฒเป€เบ–เบดเบ‡

เบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบเบฒเบ™เป€เบเบดเบเบญเบปเบšเบฎเบปเบกเปƒเบ™เบงเบฑเบ™เบชเบธเบเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ—เบตเปˆเปƒเบŠเป‰ Red Hat OpenShift Container Platform เปเบฅเบฐ Kubernetes:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™