ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ืฉืœื•ื ืœื›ื•ืœื ื‘ื‘ืœื•ื’ ื”ื–ื”! ื–ื”ื• ื”ืคื•ืกื˜ ื”ืฉืœื™ืฉื™ ื‘ืกื“ืจื” ื‘ื• ืื ื• ืžืจืื™ื ื›ื™ืฆื“ ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืžื•ื“ืจื ื™ื™ื ื‘-Red Hat OpenShift.

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ื‘ืฉื ื™ ื”ืคื•ืกื˜ื™ื ื”ืงื•ื“ืžื™ื, ื”ืจืื™ื ื• ื›ื™ืฆื“ ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืžื•ื“ืจื ื™ื™ื ื‘ื›ืžื” ืฉืœื‘ื™ื ื‘ืœื‘ื“ ื•ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ืชืžื•ื ืช S2I ื—ื“ืฉื” ื™ื—ื“ ืขื ืชืžื•ื ืช ืฉืจืช HTTP ืžื“ืฃ, ื›ื’ื•ืŸ NGINX, ืชื•ืš ืฉื™ืžื•ืฉ ื‘-builds ืžืฉื•ืจืฉืจื™ื ื›ื“ื™ ืœืชื–ืžืŸ ืคืจื™ืกื•ืช ื™ื™ืฆื•ืจ. .

ื”ื™ื•ื ื ืจืื” ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ืฉืจืช ืคื™ืชื•ื— ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื” ืฉืœื›ื ื‘ืคืœื˜ืคื•ืจืžืช OpenShift ื•ืœืกื ื›ืจืŸ ืื•ืชื• ืขื ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื”ืžืงื•ืžื™ืช, ื•ื›ืŸ ื ื“ื‘ืจ ืขืœ ืžื” ื–ื” OpenShift Pipelines ื•ื›ื™ืฆื“ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ื—ืœื•ืคื” ืœืžื›ืœื•ืœื™ื ืžืงื•ืฉืจื™ื.

OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื—

ื–ืจื™ืžืช ืขื‘ื•ื“ื” ืœืคื™ืชื•ื—

ื›ืคื™ ืฉื›ื‘ืจ ื ืืžืจ ื‘ ืคื•ืกื˜ ืจืืฉื•ืŸ, ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ื”ืื•ืคื™ื™ื ื™ ืœื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืžื•ื“ืจื ื™ื™ื ื”ื•ื ืคืฉื•ื˜ ืกื•ื’ ืฉืœ "ืฉืจืช ืคื™ืชื•ื—" ืฉืขื•ืงื‘ ืื—ืจ ืฉื™ื ื•ื™ื™ื ื‘ืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื. ื›ืืฉืจ ื”ื ืžืชืจื—ืฉื™ื, ื‘ื ื™ื™ืช ื”ืืคืœื™ืงืฆื™ื” ืžื•ืคืขืœืช ื•ืื– ื”ื™ื ืžืชืขื“ื›ื ืช ืœื“ืคื“ืคืŸ.

ื‘ืจื•ื‘ ื”ืžืกื’ืจื•ืช ื”ืžื•ื“ืจื ื™ื•ืช, "ืฉืจืช ืคื™ืชื•ื—" ื›ื–ื” ืžื•ื‘ื ื” ื‘ื›ืœื™ ืฉื•ืจืช ื”ืคืงื•ื“ื” ื”ืžืชืื™ืžื™ื.

ื“ื•ื’ืžื” ืžืงื•ืžื™ืช

ืจืืฉื™ืช, ื‘ื•ืื• ื ืจืื” ืื™ืš ื–ื” ืขื•ื‘ื“ ื‘ืขืช ื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื ื‘ืื•ืคืŸ ืžืงื•ืžื™. ื ื™ืงื— ืืช ื”ื™ื™ืฉื•ื ื›ื“ื•ื’ืžื” ืœื”ื’ื™ื‘ ืžืžืืžืจื™ื ืงื•ื“ืžื™ื, ืื ื›ื™ ื›ืžืขื˜ ืื•ืชื ืžื•ืฉื’ื™ ื–ืจื™ืžืช ืขื‘ื•ื“ื” ื—ืœื™ื ื‘ื›ืœ ื”ืžืกื’ืจื•ืช ื”ืžื•ื“ืจื ื™ื•ืช ื”ืื—ืจื•ืช.
ืœื›ืŸ, ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช "ืฉืจืช ื”ืคื™ืชื•ื—" ื‘ื“ื•ื’ืžื” ืฉืœื ื• ื‘-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 ื‘ืชื•ืš ื”ืคื•ื“ OpenShift ืฉืœื ื•.

ืื ืชืกืชื›ืœ ื‘ื™ื•ืžืŸ ืฉืœ ืชืจืžื™ืœ ืคื•ืขืœ, ื”ื•ื ื™ื™ืจืื” ื‘ืขืจืš ื›ืš:

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ื›ืžื•ื‘ืŸ ืฉื›ืœ ื–ื” ืœื ื™ื”ื™ื” ื›ืœื•ื ืขื“ ืฉื ื•ื›ืœ ืœืกื ื›ืจืŸ ืืช ื”ืงื•ื“ ื”ืžืงื•ืžื™ ืขื ื”ืงื•ื“, ืฉื’ื ื”ื•ื ืžื ื•ื˜ืจ ืœืฉื™ื ื•ื™ื™ื, ืื‘ืœ ื—ื™ ืขืœ ืฉืจืช ืžืจื•ื—ืง.

ืกื ื›ืจื•ืŸ ืžืจื—ื•ืง ื•ืงื•ื“ ืžืงื•ืžื™

ืœืžืจื‘ื” ื”ืžื–ืœ, ื”ืกื˜ืช ืฆื•ืžืช ื™ื›ื•ืœื” ืœืขื–ื•ืจ ื‘ืงืœื•ืช ื‘ืกื ื›ืจื•ืŸ, ื•ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ืช ื”ืฉืขื•ืŸ ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ืฉื™ื ื•ื™ื™ื.

ืื– ืœืื—ืจ ืฉื”ืจืฆื ื• ืืช ื”ืคืงื•ื“ื” ืœืคืจื™ืกืช ืฉืจืช ื”ืคื™ืชื•ื— ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื•, ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื‘ื˜ื—ื” ื‘ืคืงื•ื“ื” ื”ื‘ืื”:

$ 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

ื”ืคืงื•ื“ื” watch ื”ื™ื ื”ืคืฉื˜ื” ืขืœ ื”ืคืงื•ื“ื” oc rsync, ืืชื” ื™ื›ื•ืœ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืื™ืš ื–ื” ืขื•ื‘ื“ ื›ืืŸ.

ื–ื• ื”ื™ื™ืชื” ื“ื•ื’ืžื” ืœ-React, ืื‘ืœ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืื•ืชื” ืฉื™ื˜ื” ื‘ื“ื™ื•ืง ืขื ืžืกื’ืจื•ืช ืื—ืจื•ืช, ืคืฉื•ื˜ ื”ื’ื“ืจ ืืช ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” NPM_RUN ืœืคื™ ื”ืฆื•ืจืš.
โ€ƒ

ืฆื™ื ื•ืจื•ืช ืขื ื”ื™ืœื•ืš ืคืชื•ื—

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ื‘ืฉืœื‘ ื”ื‘ื ื ื“ื‘ืจ ืขืœ ื›ืœื™ ื›ืžื• OpenShift Pipelines ื•ื›ื™ืฆื“ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื—ืœื•ืคื” ืœื‘ื ื™ื™ื” ืžืฉื•ืจืฉืจืช.

ืžื”ื OpenShift Pipelines

OpenShift Pipelines ื”ื™ื ืžืขืจื›ืช ืื™ื ื˜ื’ืจืฆื™ื” ื•ืืกืคืงื” โ€‹โ€‹ืžืชืžืฉื›ืช CI/CD ืžืงื•ืจื™ืช ื‘ืขื ืŸ ื”ืžื™ื•ืขื“ืช ืœืืจื’ื•ืŸ ืฆื™ื ื•ืจื•ืช ื‘ืืžืฆืขื•ืช Tekton. Tekton ื”ื™ื ืžืกื’ืจืช CI/CD ื’ืžื™ืฉื” ื‘ืงื•ื“ ืคืชื•ื— ืฉืœ Kubernetes, ื”ืžืืคืฉืจืช ืœืš ืœื”ืคื•ืš ืืช ื”ืคืจื™ืกื” ืœืื•ื˜ื•ืžื˜ื™ืช ื‘ืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช (Kubernetes, ืœืœื ืฉืจืชื™ื, ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื•ื›ื•') ืขืœ ื™ื“ื™ ื”ืคืฉื˜ื” ืžื”ืฉื›ื‘ื” ื”ื‘ืกื™ืกื™ืช.

ื”ื‘ื ืช ืžืืžืจ ื–ื” ื“ื•ืจืฉืช ื™ื“ืข ืžืกื•ื™ื ื‘-Pipelines, ืœื›ืŸ ืื ื• ืžืžืœื™ืฆื™ื ื‘ื—ื•ื ืœืงืจื•ื ืชื—ื™ืœื” ืกืคืจ ืœื™ืžื•ื“ ืจืฉืžื™.

ื”ื’ื“ืจืช ืกื‘ื™ื‘ืช ื”ืขื‘ื•ื“ื” ืฉืœืš

ื›ื“ื™ ืœืฉื—ืง ืขื ื”ื“ื•ื’ืžืื•ืช ื‘ืžืืžืจ ื–ื”, ืชื—ื™ืœื” ืขืœื™ืš ืœื”ื›ื™ืŸ ืืช ืกื‘ื™ื‘ืช ื”ืขื‘ื•ื“ื” ืฉืœืš:

  1. ื”ืชืงืŸ ื•ื”ื’ื“ืจ ืืฉื›ื•ืœ OpenShift 4. ื”ื“ื•ื’ืžืื•ืช ืฉืœื ื• ืžืฉืชืžืฉื•ืช ื‘-CodeReady Containers (CRD) ืœืฉื ื›ืš, ืฉื ื™ืชืŸ ืœืžืฆื•ื ืขื‘ื•ืจืŸ ื”ื•ืจืื•ืช ื”ืชืงื ื” ื›ืืŸ.
  2. ืœืื—ืจ ืฉื”ืืฉื›ื•ืœ ืžื•ื›ืŸ, ืขืœื™ืš ืœื”ืชืงื™ืŸ ืขืœื™ื• Pipeline Operator. ืืœ ืชืคื—ื“, ื–ื” ืงืœ, ื”ื•ืจืื•ืช ื”ืชืงื ื” ื›ืืŸ.
  3. ื”ื•ืจื“ Tekton CLI (tkn) ื›ืืŸ.
  4. ื”ืคืขืœ ืืช ื›ืœื™ ืฉื•ืจืช ื”ืคืงื•ื“ื” create-react-app ื›ื“ื™ ืœื™ืฆื•ืจ ืืคืœื™ืงืฆื™ื” ืฉืชืคืจื•ืก ืœืื—ืจ ืžื›ืŸ (ื–ื”ื• ื™ื™ืฉื•ื ืคืฉื•ื˜ ืœื”ื’ื™ื‘).
  5. (ืื•ืคืฆื™ื•ื ืœื™) ืฉื›ืคืœ ืืช ื”ืžืื’ืจ ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ื™ื™ืฉื•ื ืœื“ื•ื’ืžื” ื‘ืื•ืคืŸ ืžืงื•ืžื™ ืขื npm install ื•ืœืื—ืจ ืžื›ืŸ npm start.

ืœืžืื’ืจ ื”ื™ื™ืฉื•ืžื™ื ืชื”ื™ื” ื’ื ืชื™ืงื™ื™ืช k8s, ืฉืชื›ื™ืœ ืืช Kubernetes/OpenShift YAMLs ื”ืžืฉืžืฉื™ื ืœืคืจื™ืกืช ื”ืืคืœื™ืงืฆื™ื”. ื™ื”ื™ื• ืžืฉื™ืžื•ืช, ClusterTasks, ืžืฉืื‘ื™ื ื•ืฆื™ื ื•ืจื•ืช ืฉื ื™ืฆื•ืจ ื‘ื–ื” ืžืื’ืจื™ื.

ื‘ื•ืื• ื ืชื—ื™ืœ

ื”ืฆืขื“ ื”ืจืืฉื•ืŸ ืขื‘ื•ืจ ื”ื“ื•ื’ืžื” ืฉืœื ื• ื”ื•ื ื™ืฆื™ืจืช ืคืจื•ื™ืงื˜ ื—ื“ืฉ ื‘ืืฉื›ื•ืœ OpenShift. ื‘ื•ืื• ื ืงืจื ืœืคืจื•ื™ืงื˜ ื”ื–ื” webapp-pipeline ื•ื ื™ืฆื•ืจ ืื•ืชื• ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ oc new-project webapp-pipeline

ืฉื ื”ืคืจื•ื™ืงื˜ ื”ื–ื” ื™ื•ืคื™ืข ื‘ืงื•ื“ ื‘ื”ืžืฉืš, ืื– ืื ืชื—ืœื™ื˜ ืœืงืจื•ื ืœื• ืžืฉื”ื• ืื—ืจ, ืืœ ืชืฉื›ื— ืœืขืจื•ืš ืืช ื”ืงื•ื“ ืœื“ื•ื’ืžื” ื‘ื”ืชืื. ื”ื—ืœ ืžื ืงื•ื“ื” ื–ื•, ืœื ื ืœืš ืžืœืžืขืœื” ืœืžื˜ื”, ืืœื ืžืœืžื˜ื” ืœืžืขืœื”: ื›ืœื•ืžืจ, ืงื•ื“ื ื›ืœ ื ื™ืฆื•ืจ ืืช ื›ืœ ืžืจื›ื™ื‘ื™ ื”ืžืกื•ืข, ื•ืจืง ืื—ืจ ื›ืš ืืช ื”ืžืกื•ืข ืขืฆืžื•.

ืื– ืงื•ื“ื ื›ืœ...

ืžืฉื™ืžื•ืช

ื‘ื•ืื• ื ื™ืฆื•ืจ ื›ืžื” ืžืฉื™ืžื•ืช, ืฉื™ืขื–ืจื• ืœืคืจื•ืก ืืช ื”ืืคืœื™ืงืฆื™ื” ื‘ืชื•ืš ื”ืฆื™ื ื•ืจ ืฉืœื ื•. ื”ืžืฉื™ืžื” ื”ืจืืฉื•ื ื” - application_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 it is dist. ื”ืคืœื˜ ืฉืœ ืžืฉื™ืžืช ื”ืืฉื›ื•ืœ ื”ืจืืฉื•ื ื” ืฉืœื ื• ืชื”ื™ื” ืชืžื•ื ื” ื”ืžื›ื™ืœื” ืืช 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 ื”ื•ื ืžืกื•ื’ image, ื•ื”ืขืจืš ืฉืœ ื”ืคืจืžื˜ืจ url ืžืฆื‘ื™ืข ืขืœ ืจื™ืฉื•ื ื”ืชืžื•ื ื•ืช ื”ืคื ื™ืžื™ ืฉืœ OpenShift, ื‘ืžื™ื•ื—ื“ ื–ื” ืฉื ืžืฆื ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ืฉืœ webapp-pipeline. ืืœ ืชืฉื›ื— ืœืฉื ื•ืช ื”ื’ื“ืจื” ื–ื• ืื ืืชื” ืžืฉืชืžืฉ ื‘ืžืจื—ื‘ ืฉืžื•ืช ืื—ืจ.

ื•ืœื‘ืกื•ืฃ, ื”ืžืฉืื‘ ื”ืื—ืจื•ืŸ ืฉืื ื• ืฆืจื™ื›ื™ื ื™ื”ื™ื” ื’ื ืžืกื•ื’ image ื•ื–ื• ืชื”ื™ื” ืชืžื•ื ืช 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.

ื›ื“ื™ ืœื™ืฆื•ืจ ืืช ื›ืœ ื”ืžืฉืื‘ื™ื ื”ืœืœื• ื‘ื‘ืช ืื—ืช, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืคืงื•ื“ื” create:

$ 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

ืœืื—ืจ ืžื›ืŸ ืื ื• ื™ื•ืฆืจื™ื ืืช ื”ืžืฉื™ืžื•ืช ืฉื”ืฆื™ื ื•ืจ ืฉืœื ื• ืฆืจื™ืš ืœื”ืฉืœื™ื. ืงื•ื“ื ื›ืœ, ืขืœื™ื• ืœื‘ืฆืข ืืช ืžืฉื™ืžืช 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 ืฉื›ื‘ืจ ื™ืฆืจื ื• ื ืงืจืืช:

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, ื•ืœืื—ืจ ืžื›ืŸ ืขื‘ื•ืจ ืžืฉืื‘ ื”ืชืžื•ื ื” ื”ืจืืฉื•ืŸ, ืžื•ื‘ื ื”-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}}'

ืœื”ื“ืžื™ื” ื˜ื•ื‘ื” ื™ื•ืชืจ, ืืชื” ื™ื›ื•ืœ ืœื”ืฆื™ื’ ืืช ื”ืฆื™ื ื•ืจ ืฉืœื ื• ื‘ืžืฆื‘ ืžืคืชื—ื™ื ืฉืœ ืงื•ื ืกื•ืœืช ื”ืื™ื ื˜ืจื ื˜ ื‘ืงื˜ืข ืฆื™ื ื•ืจื•ืช, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ. 1.

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ืื™ื•ืจ.1. ืกืงื™ืจื” ืฉืœ ืฆื™ื ื•ืจื•ืช ืคื•ืขืœื™ื.

ืœื—ื™ืฆื” ืขืœ ืฆื™ื ื•ืจ ืคื•ืขืœ ืžืฆื™ื’ื” ืคืจื˜ื™ื ื ื•ืกืคื™ื, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ 2.

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ืื•ืจื–. 2. ืžื™ื“ืข ื ื•ืกืฃ ืขืœ ื”ืฆื™ื ื•ืจ.

ืœืื—ืจ ืžื™ื“ืข ื ื•ืกืฃ, ืชื•ื›ืœ ืœืจืื•ืช ื™ื™ืฉื•ืžื™ื ืคื•ืขืœื™ื ื‘ืชืฆื•ื’ื” ื˜ื•ืคื•ืœื•ื’ื™ื”, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ 3.

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ืื™ื•ืจ 3. ืคื•ื“ ื”ื•ืฉืง.

ืœื—ื™ืฆื” ืขืœ ื”ืขื™ื’ื•ืœ ื‘ืคื™ื ื” ื”ื™ืžื ื™ืช ื”ืขืœื™ื•ื ื” ืฉืœ ื”ืกืžืœ ืคื•ืชื—ืช ืืช ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื•, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ 4.

ื™ื™ืฉื•ืžื™ื ืžื•ื“ืจื ื™ื™ื ื‘-OpenShift, ื—ืœืง 3: OpenShift ื›ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•-OpenShift Pipelines

ืื•ืจื–. 4. ื”ืคืขืœืช ืืคืœื™ืงืฆื™ื™ืช React.

ืžืกืงื ื”

ืื–, ื”ืจืื™ื ื• ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ืฉืจืช ืคื™ืชื•ื— ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื” ืฉืœืš ื‘-OpenShift ื•ืœืกื ื›ืจืŸ ืื•ืชื• ืขื ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื”ืžืงื•ืžื™ืช. ื‘ื“ืงื ื• ื’ื ื›ื™ืฆื“ ืœื“ืžื•ืช ืชื‘ื ื™ืช ื‘ื ื™ื™ื” ืžืฉื•ืจืฉืจืช ื‘ืืžืฆืขื•ืช OpenShift Pipelines. ื ื™ืชืŸ ืœืžืฆื•ื ืืช ื›ืœ ื”ืงื•ื“ื™ื ืœื“ื•ื’ืžื” ืžื”ืžืืžืจ ื”ื–ื” ื›ืืŸ.

ืžืฉืื‘ื™ื ื ื•ืกืคื™ื (EN)

ื”ื•ื“ืขื•ืช ืขืœ ืกืžื™ื ืจื™ื ืžืงื•ื•ื ื™ื ืงืจื•ื‘ื™ื

ืื ื• ืžืชื—ื™ืœื™ื ืกื“ืจื” ืฉืœ ืกืžื™ื ืจื™ื ืžืงื•ื•ื ื™ื ืฉืœ ื™ื•ื ืฉื™ืฉื™ ืขืœ ื—ื•ื•ื™ื” ืžืงื•ืจื™ืช ื‘ืฉื™ืžื•ืฉ ื‘-Red Hat OpenShift Container Platform ื•-Kubernetes:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”