αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αžŸαž½αžŸαŸ’αžαžΈαž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž”αŸ’αž›αž€αŸ‹αž“αŸαŸ‡! αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαž‘αžΈαž”αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸŠαŸαžšαžΈαž˜αž½αž™αžŠαŸ‚αž›αž™αžΎαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžŠαžΆαž‰αž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ Red Hat OpenShift αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž–αžΈαžšαž›αžΎαž€αž˜αž»αž“ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžœαž·αž’αžΈαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžŠαžΆαž‰αž‘αŸ†αž“αžΎαž”αžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž–αžΈαžšαž”αžΈαž‡αŸ†αž αžΆαž“αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž“αž·αž„αžšαž”αŸ€αž”αž”αŸ’αžšαžΎαžšαžΌαž”αž—αžΆαž– S2I αžαŸ’αž˜αžΈ αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαžΌαž”αž—αžΆαž–αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ HTTP αž€αŸ’αžšαŸ…αž’αŸ’αž“αžΎ αžŠαžΌαž…αž‡αžΆ NGINX αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‡αžΆαž…αŸ’αžšαžœαžΆαž€αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” .

αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆ OpenShift αž“αž·αž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžœαžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž αžΎαž™αž€αŸαž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž› OpenShift Pipelines αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž‡αŸ†αž“αž½αžŸαž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αŸ”

OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ αž”αŸ’αžšαž€αžΆαžŸαžŠαŸ†αž”αžΌαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž’αž˜αŸ’αž˜αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžαžΆαž‰αž‘αŸ†αž“αžΎαž”αž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒ "αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ" αžŠαŸ‚αž›αžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαž€αžΎαžαž‘αžΎαž„ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸαŸ‡ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž‘αŸ†αž“αžΎαž”αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ "αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ" αž”αŸ‚αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€

αžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αžαŸ„αŸ‡αž™αž€αž–αžΆαž€αŸ’αž™αžŸαž»αŸ†αž’αŸ’αžœαžΎαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜ αž–αžΈαž’αžαŸ’αžαž”αž‘αž˜αž»αž“ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž‚αŸ†αž“αž·αžαž›αŸ†αž αžΌαžšαž€αžΆαžšαž„αžΆαžšαžŸαŸ’αž‘αžΎαžšαžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž‘αŸ†αž“αžΎαž”αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸαžŠαŸ„αž™αŸ”
αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ "dev server" αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸ React αžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ npm run start

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž„αŸ’αž’αž½αž…αžŸαŸ’αžαžΆαž“αžΈαž™αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž“αŸαŸ‡:

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ 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 αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αž”αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ yarn start αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ React developer server αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ OpenShift pod αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž“αŸƒαž€αžΆαžšαžšαžαŸ‹ pod αžœαžΆαž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡:

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αž’αŸ’αžœαžΈαž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αžšαž αžΌαžαž‘αžΆαž›αŸ‹αžαŸ‚αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž€αžΌαžŠαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‡αžΆαž˜αž½αž™αž€αžΌαžŠ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž•αž„αžŠαŸ‚αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αŸ”

αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αž“αž·αž„αž›αŸαžαž€αžΌαžŠαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ nodeshift αž’αžΆαž…αž‡αž½αž™αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΆαž‘αž·αž€αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αžΎαž„αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ–

$ npx nodeshift watch

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž•αžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αž“αŸαŸ‡αž”αž“αŸ’αžαž·αž… αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž“αŸƒαž―αž€αžŸαžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αž„αŸ’αž€αŸ„αž˜αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜ αž αžΎαž™αž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž”αŸ‹αžŠαŸαžαž―αž€αžŸαžΆαžš 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

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΆαž‘αž·αž€αžΆαž‚αžΊαž‡αžΆαž’αžšαžΌαž”αžΈαž˜αž½αž™αž“αŸ…αž›αžΎαž€αŸ†αž–αžΌαž›αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ oc rsync αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž“αŸαŸ‡αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ React αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž˜αž½αž™αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NPM_RUN αž‡αžΆαž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”
 

αž”αŸ†αž–αž„αŸ‹ Openshift

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž§αž”αž€αžšαžŽαŸαžŠαžΌαž…αž‡αžΆ OpenShift Pipelines αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αŸ”

αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆ OpenShift Pipelines

OpenShift Pipelines αž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› αž“αž·αž„αž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž CI/CD αžŠαŸ‚αž›αž˜αžΆαž“αžŠαžΎαž˜αž€αŸ†αžŽαžΎαžαž–αžΈαž–αž–αž€ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαŸ€αž”αž…αŸ†αž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ Tekton αŸ” Tekton αž‚αžΊαž‡αžΆαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžšαžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“ Kubernetes-native CI/CD framework αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆαž•αŸ’αžŸαŸαž„αŸ— (Kubernetes, serverless, virtual machines αŸ”αž›αŸ”) αžŠαŸ„αž™αž’αžšαžΌαž”αžΈαž–αžΈαžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ”

αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αžΆαž˜αž‘αžΆαžšαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αžαŸ’αž›αŸ‡αŸ—αž’αŸ†αž–αžΈαž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž™αŸ‰αžΆαž„αž˜αž»αžαž˜αžΆαŸ†αžαžΆαž’αŸ’αž“αž€αž’αžΆαž“αž‡αžΆαž˜αž»αž“αžŸαž·αž“ αžŸαŸ€αžœαž—αŸ…αžŸαž·αž€αŸ’αžŸαžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš.

αžšαŸ€αž”αž…αŸ†αž”αžšαž·αž™αžΆαž€αžΆαžŸαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž›αŸαž„αž‡αžΆαž˜αž½αž™αž§αž‘αžΆαž αžšαžŽαŸαž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžšαŸ€αž”αž…αŸ†αž”αžšαž·αž™αžΆαž€αžΆαžŸαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ–

  1. αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αŸ’αžšαž»αž˜ OpenShift 4 αŸ” αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž”αŸ’αžšαžΎ CodeReady Containers (CRD) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.
  2. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αž„αŸ’αž€αŸ„αž˜αžšαž½αž…αžšαžΆαž›αŸ‹ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„ Pipeline Operator αž“αŸ…αž›αžΎαžœαžΆαŸ” αž€αž»αŸ†αž—αŸαž™αžαŸ’αž›αžΆαž…αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž› αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.
  3. αž‘αžΆαž‰αž™αž€ Tekton CLI (tkn) αž“αŸ…αž‘αžΈαž“αŸαŸ‡.
  4. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž§αž”αž€αžšαžŽαŸαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ create-react-app αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž“αžΉαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ (αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰ αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜).
  5. (αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸ) αž€αŸ’αž›αžΌαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž§αž‘αžΆαž αžšαžŽαŸαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŠαŸ†αž‘αžΎαž„ npm αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ npm αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

αžƒαŸ’αž›αžΆαŸ†αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸαž“αžΉαž„αž˜αžΆαž“αžαž k8s αžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“ Kubernetes/OpenShift YAMLs αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αžœαžΆαž“αžΉαž„αž˜αžΆαž“ Tasks, ClusterTasks, Resources and Pipelines αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸαŸ‡αŸ” αžƒαŸ’αž›αžΆαŸ†αž„.

αžαŸ„αŸ‡β€‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜

αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž”αž„αŸ’αž€αžΎαžαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ OpenShift αŸ” αž…αžΌαžšαž αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αžαžΆ webapp-pipeline αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ oc new-project webapp-pipeline

αžˆαŸ’αž˜αŸ„αŸ‡αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αžœαžΆαž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž€αžΌαžŠαž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž˜αŸ” αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž…αž»αŸ‡αž–αžΈαž›αžΎαž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αŸ– αž“αŸ„αŸ‡αž‚αžΊαžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒ conveyor αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αžαŸ‚ 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αŸ–

$ 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

αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αž˜αžΎαž“αžΉαž„ 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αŸ” αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž›αŸ†αž αžˆαŸ’αž˜αŸ„αŸ‡αž•αŸ’αžŸαŸαž„αŸ”

αž αžΎαž™αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž’αž“αž’αžΆαž“αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸαž‡αžΆαžšαžΌαž”αž—αžΆαž–αž”αŸ’αžšαž—αŸαž‘ αž αžΎαž™αž“αŸαŸ‡αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαžšαžΌαž”αž—αžΆαž– 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 αžαžΆαž„αž€αŸ’αž“αž»αž„αž“αŸ…αž€αŸ’αž“αž»αž„ webapp-pipeline namespaceαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αž™αžΎαž„αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αž„αŸ’αž€αžΎαžαŸ–

$ 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) αž“αž·αž„αž‘αž·αž“αŸ’αž“αž•αž› (αž’αž“αž’αžΆαž“αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αž‘αžΎαž„ - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ - αžšαžΌαž”αž—αžΆαž–) αŸ” αž™αžΎαž„αž€αŸαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆαž“αžΌαžœαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αž·αžŸαŸαžŸαž˜αž½αž™αž•αž„αžŠαŸ‚αžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αž·αž“αž’αžΆαž…αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ 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 task αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžšαž½αž…αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαŸ–

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

αžŠαžΌαž…αž“αžΉαž„αž€αž·αž…αŸ’αž…αž€αžΆαžšαž˜αž»αž“αžŠαŸ‚αžš αž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αž“αž’αžΆαž“αž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αž‘αžΎαž„-web-application-image (αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž–αžΈαž˜αž»αž“αžšαž”αžŸαŸ‹αž™αžΎαž„)αŸ” αž αžΎαž™αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžšαžΌαž”αž—αžΆαž–αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαŸ„αž™αžŸαžΆαžšβ€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αž“αŸαŸ‡β€‹αžαŸ’αžšαžΌαžœβ€‹αžαŸ‚β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αž˜αž»αž“ αž™αžΎαž„β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αžœαžΆαž› 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 αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αž€αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αž—αžΆαž–αžαŸ’αž˜αžΈαŸ” αž™αžΎαž„αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž“αŸ…αžŠαžΎαž˜αž’αžαŸ’αžαž”αž‘αŸ”

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΌαž“

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αŸ’αžšαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„ αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ tkn pipeline start build-and-deploy-react

αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡ αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ αž αžΎαž™αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž’αž“αž’αžΆαž“αžŸαž˜αžŸαŸ’αžšαž” αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αžŸαŸ†αžŽαžΎαž“αžΈαž˜αž½αž™αŸ—αžšαž”αžŸαŸ‹αžœαžΆαŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“ git αžŸαžΌαž˜αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ web-application-repo αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“αžšαžΌαž”αž—αžΆαž–αžŠαŸ†αž”αžΌαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αžΎαžαž‚αŸαž αž‘αŸ†αž–αŸαžš -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}}'

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹ αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž”αŸ†αž–αž„αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαž€αž»αž„αžŸαžΌαž›αž‚αŸαž αž‘αŸ†αž–αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ αž”αŸ†αž–αž„αŸ‹αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αž–αŸ” ៑.

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αžšαžΌαž” ៑. αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž“αŸƒαž”αŸ†αž–αž„αŸ‹αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž€αžΆαžšαž…αž»αž…αž›αžΎαž”αŸ†αž–αž„αŸ‹αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜ αžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αž‘αžΈ 2 αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αž’αž„αŸ’αž€αžšαŸ” 2. αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž·αžŠαŸ’αž‹αž—αžΆαž– TopologyαžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αž‘αžΈ 3 αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αžšαžΌαž”αž‘αžΈ 3. αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž•αžαŸ”

αž…αž»αž…αž›αžΎαžšαž„αŸ’αžœαž„αŸ‹αž“αŸ…αž‡αŸ’αžšαž»αž„αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αžαžΆαž„αž›αžΎαž“αŸƒαžšαžΌαž”αžαŸ†αžŽαžΆαž„αž”αžΎαž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž‘αžΈ 4 αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αž“αŸ…αž›αžΎ OpenShift αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 3αŸ– OpenShift αž‡αžΆαž”αžšαž·αž™αžΆαž€αžΆαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„ OpenShift Pipelines

αž’αž„αŸ’αž€αžšαŸ” 4. αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ React αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž›αžΎ OpenShift αž αžΎαž™αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžœαžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αž™αžΎαž„αž€αŸαž”αžΆαž“αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž‚αŸ†αžšαžΌαž”αž„αŸ’αž€αžΎαžαžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎ OpenShift Pipelines αŸ” αž€αžΌαžŠαž§αž‘αžΆαž αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž’αžΆαž…αžšαž€αž”αžΆαž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž’αž“αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ (EN)

αžŸαŸαž…αž€αŸ’αžαžΈαž”αŸ’αžšαž€αžΆαžŸαž’αŸ†αž–αžΈ webinars αž“αžΆαž–αŸαž›αžαžΆαž„αž˜αž»αž

αž™αžΎαž„β€‹αž€αŸ†αž–αž»αž„β€‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜β€‹αžœαž‚αŸ’αž‚β€‹αžŸαž·αž€αŸ’αžαžΆαžŸαžΆαž›αžΆβ€‹αž“αŸ…β€‹αžαŸ’αž„αŸƒβ€‹αžŸαž»αž€αŸ’αžšβ€‹αž’αŸ†αž–αžΈβ€‹αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸβ€‹αžŠαžΎαž˜β€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎ Red Hat OpenShift Container Platform αž“αž·αž„ KubernetesαŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹