werf 1.1 ืžืขืœื“ื•ื ื’: ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืฆื• ื“ื™ ื‘ื™ืœื“ืขืจ ื”ื™ื™ึทื ื˜ ืื•ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜

werf 1.1 ืžืขืœื“ื•ื ื’: ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืฆื• ื“ื™ ื‘ื™ืœื“ืขืจ ื”ื™ื™ึทื ื˜ ืื•ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜

werf ืื™ื– ืื•ื ื“ื–ืขืจ ืึธืคึฟืŸ ืžืงื•ืจ GitOps CLI ื ื•ืฆืŸ ืคึฟืึทืจ ื‘ื ื™ืŸ ืื•ืŸ ื“ืขืœื™ื•ื•ืขืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• Kubernetes. ื•ื•ื™ ืฆื•ื’ืขื–ืื’ื˜, ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื•ื•ืขืจืกื™ืข ื•ื•1.0 ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ืึทื“ื™ื ื’ ื ื™ื™ึท ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืฆื• ื•ื•ืขืจืฃ ืื•ืŸ ืจื™ื•ื•ื™ื™ื–ื™ื ื’ ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ ืึทืคึผืจืึธื•ื˜ืฉื™ื–. ืื™ืฆื˜ ืžื™ืจ ื–ืขื ืขืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ืคืึธืจืฉื˜ืขืœืŸ ืžืขืœื“ื•ื ื’ v1.1, ื•ื•ืึธืก ืื™ื– ืึท ื’ืจื•ื™ืก ืฉืจื™ื˜ ืื™ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ืึท ื™ืกื•ื“ ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ื–ืึทืžืœืขืจ werf. ื“ื™ ื•ื•ืขืจืกื™ืข ืื™ื– ื“ืขืจื•ื•ื™ื™ึทืœ ื‘ื ื™ืžืฆื ืื™ืŸ ืงืึทื ืึทืœ 1.1 ืขืึท.

ื“ื™ ื™ืงืขืจ ืคื•ืŸ ื“ื™ ืžืขืœื“ื•ื ื’ ืื™ื– ื“ื™ ื ื™ื™ึทืข ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ ื‘ื™ื ืข ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ื‘ื™ื™ื“ืข ืงืึทืœืขืงื˜ืขืจื– (ืคึฟืึทืจ Stapel ืื•ืŸ Dockerfile). ื“ื™ ื ื™ื™ึทืข ืกื˜ืึธืจื™ื“ื–ืฉ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืึธืคึผืขื ืก ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืึทืกืขืžื‘ืœื™ื– ืคื•ืŸ ืงื™ื™ืคืœ ืžื—ื ื•ืช ืื•ืŸ ืคึผืึทืจืึทืœืขืœ ืึทืกืขืžื‘ืœื™ื– ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื‘ืึทืœืขื‘ืึธืก.

ืึธืคึผื˜ื™ืžื™ื–ืึทื˜ื™ืึธืŸ ืคื•ืŸ ืึทืจื‘ืขื˜ ื›ื•ืœืœ ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ ื•ืžื ื™ื™ื˜ื™ืง ื—ืฉื‘ื•ื ื•ืช ืื™ืŸ ื“ืขืจ ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื‘ื™ื ืข ืกื™ื’ื ืึทื˜ืฉืขืจื– ืื•ืŸ ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ืžืขืงืึทื ื™ื–ืึทืžื– ืคึฟืึทืจ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื˜ืขืงืข ื˜ืฉืขืงืงืกืึทืžื– ืฆื• ืžืขืจ ืขืคืขืงื˜ื™ื•ื•. ื“ื™ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืจืึทื“ื•ืกืึทื– ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืฆื™ื™ื˜ ืคื•ืŸ ืคึผืจื•ื™ืขืงื˜ ื‘ื•ื™ืขืŸ ื ื™ืฆืŸ ื•ื•ืขืจืฃ. ืื•ืŸ ืœื™ื™ื“ื™ืง ื‘ื•ื™ืขืŸ, ื•ื•ืขืŸ ืึทืœืข ืกื˜ืึทื’ืขืก ืขืงืกื™ืกื˜ื™ืจืŸ ืื™ืŸ ื“ื™ ืงืึทืฉ ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ, ื–ืขื ืขืŸ ืื™ืฆื˜ ื˜ืึทืงืข ืฉื ืขืœ. ืื™ืŸ ืจื•ื‘ึฟ ืงืึทืกืขืก, ืจื™ืกื˜ืึทืจื˜ื™ื ื’ ื“ื™ ื‘ื•ื™ืขืŸ ื•ื•ืขื˜ ื ืขืžืขืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ 1 ืจื’ืข! ื“ืึธืก ืื•ื™ืš ืึทืคึผืœื™ื™ื– ืฆื• ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืคึฟืึทืจ ื•ื•ืขืจืึทืคื™ื™ื™ื ื’ ืกื˜ืึทื’ืขืก ืื™ืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืคื•ืŸ ื˜ื™ืžื– 'ืึทืจื‘ืขื˜. werf deploy ะธ werf run.

ืื•ื™ืš ืื™ืŸ ื“ืขื ืžืขืœื“ื•ื ื’, ืึท ืกื˜ืจืึทื˜ืขื’ื™ืข ืคึฟืึทืจ ื˜ืึทื’ื™ื ื’ ื‘ื™ืœื“ืขืจ ื“ื•ืจืš ืื™ื ื”ืึทืœื˜ ืืจื•ื™ืก - ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’, ื•ื•ืึธืก ืื™ื– ืื™ืฆื˜ ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืื•ืŸ ื“ืขืจ ื‘ืœื•ื™ื– ืื™ื™ื ืขืจ ืจืขืงืึทืžืขื ื“ื™ื“.

ืœืึธืžื™ืจ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืื™ืŸ ื“ื™ ืฉืœื™ืกืœ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– ืื™ืŸ werf v1.1, ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื“ืขืจืฆื™ื™ืœืŸ ืื™ืจ ื•ื•ืขื’ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜.

ื•ื•ืึธืก ืื™ื– ืคืืจืขื ื“ืขืจื˜ ืื™ืŸ werf v1.1?

ื ื™ื• ื‘ื™ื ืข ื ืึทืžื™ื ื’ ืคึฟืึธืจืžืึทื˜ ืื•ืŸ ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืกืึทืœืขืงื˜ื™ื ื’ ืกื˜ืึทื’ืขืก ืคื•ืŸ ืงืึทืฉ

ื ื™ื• ื‘ื™ื ืข ื ืึธืžืขืŸ ื“ื•ืจ ื”ืขืจืฉืŸ. ืื™ืฆื˜ ื™ืขื“ืขืจ ื‘ื™ื ืข ื‘ื•ื™ืขืŸ ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืึท ื™ื™ื ืฆื™ืง ื‘ื™ื ืข ื ืึธืžืขืŸ, ื•ื•ืึธืก ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ 2 ืคึผืึทืจืฅ: ืึท ื›ืกื™ืžืข (ื•ื•ื™ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ืŸ ื•ื•1.0) ืคึผืœื•ืก ืึท ื™ื™ื ืฆื™ืง ืฆื™ื™ึทื˜ื•ื•ื™ื™ึทืœื™ืง ื™ื“ืขื ื˜ื™ืคื™ืขืจ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคื•ืœ ื‘ื™ื ืข ื‘ื™ืœื“ ื ืึธืžืขืŸ ื–ืืœ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

... ืึธื“ืขืจ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

ื“ืึธ:

  • SIGNATURE ืื™ื– ืึท ื‘ื™ื ืข ื›ืกื™ืžืข, ื•ื•ืึธืก ืจืขืคึผืจืึทื–ืขื ืฅ ื“ื™ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืคื•ืŸ ื“ื™ ื‘ื™ื ืข ืื™ื ื”ืึทืœื˜ ืื•ืŸ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ืจืขื“ืืงืฆื™ืข ืื™ืŸ ื’ื™ื˜ ื•ื•ืึธืก ื’ืขืคื™ืจื˜ ืฆื• ื“ืขื ืื™ื ื”ืึทืœื˜;
  • TIMESTAMP_MILLISEC ืื™ื– ืึท ื’ืขืจืึทื ื˜ื™ื“ ื™ื™ื ืฆื™ืง ื‘ื™ืœื“ ื™ื“ืขื ื˜ื™ืคื™ืขืจ ื•ื•ืึธืก ืื™ื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ื•ื•ืขืŸ ืึท ื ื™ื™ึทืข ื‘ื™ืœื“ ืื™ื– ื’ืขื‘ื•ื™ื˜.

ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืกืขืœื™ื ื’ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ืงืึทืฉ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ืฉื™ื™ื›ื•ืช ืคื•ืŸ Git ืงืึทืžื™ืฅ:

  1. ื•ื•ืขืจืฃ ืงืึทืœืงื™ืึทืœื™ื™ืฅ ื“ื™ ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ืึท ื–ื™ื›ืขืจ ื‘ื™ื ืข.
  2. ะ’ ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืขื˜ืœืขื›ืข ืกื˜ืึทื’ืขืก ืคึฟืึทืจ ืึท ื’ืขื’ืขื‘ืŸ ื›ืกื™ืžืข. Werf ืกืึทืœืขืงืฅ ืึทืœืข ืกื˜ืึทื’ืขืก ื•ื•ืึธืก ื’ืœื™ื™ึทื›ืŸ ื“ื™ ื›ืกื™ืžืข.
  3. ืื•ื™ื‘ ื“ื™ ืงืจืึทื ื˜ ื‘ื™ื ืข ืื™ื– ืœื™ื ื’ืงื˜ ืฆื• Git (git-archive, ืžื ื”ื’ ื‘ื™ื ืข ืžื™ื˜ ื’ื™ื˜ ืคึผืึทื˜ืฉืึทื–: install, beforeSetup, setup; ืึธื“ืขืจ git-latest-patch), ื“ืขืžืึธืœื˜ werf ืกืึทืœืขืงืฅ ื‘ืœื•ื™ื– ื“ื™ ืกื˜ืึทื’ืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืคืืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืึท ืงืึทืžื™ื˜ ื•ื•ืึธืก ืื™ื– ืึทืŸ ืึธื•ื•ืขืก ืคื•ืŸ ื“ื™ ืงืจืึทื ื˜ ืงืึทืžื™ื˜ (ืคึฟืึทืจ ื•ื•ืึธืก ื“ื™ ื‘ื•ื™ืขืŸ ืื™ื– ื’ืขืจื•ืคืŸ).
  4. ืคื•ืŸ ื“ื™ ืจื•ืขืŸ ืคึผืึทืกื™ืง ืกื˜ืึทื’ืขืก, ืื™ื™ื ืขืจ ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ - ื“ื™ ืึธื•ืœื“ืึทืกื˜ ื“ื•ืจืš ืฉืึทืคื•ื ื’ ื˜ืึธื’.

ื ื‘ื™ื ืข ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ื’ื™ื˜ ืฆื•ื•ื™ื™ื’ืŸ ืงืขื ืขืŸ ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ื›ืกื™ืžืข. ืึธื‘ืขืจ ื•ื•ืขืจืฃ ื•ื•ืขื˜ ืคืึทืจืžื™ื™ื“ืŸ ื“ื™ ืงืึทืฉ ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืฆื•ื•ื™ื™ื’ืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื•ื™ืฉืŸ ื“ื™ ืฆื•ื•ื™ื™ื’ืŸ, ืืคื™ืœื• ืื•ื™ื‘ ื“ื™ ืกื™ื’ื ืึทื˜ืฉืขืจื– ื’ืœื™ื™ึทื›ืŸ.

โ†’ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ื ื™ื• ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืื•ืŸ ืฉืคึผืึธืจืŸ ืกื˜ืึทื’ืขืก ืื™ืŸ ื“ืขืจ ื‘ื™ื ืข ืกื˜ืึธืจื™ื“ื–ืฉ

ืื•ื™ื‘, ื•ื•ืขืŸ ืกืขืœื™ื ื’ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ืงืึทืฉ, werf ืงืขืŸ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ืึท ืคึผืึทืกื™ืง ื‘ื™ื ืข, ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืึทืกืขืžื‘ืึทืœื™ื ื’ ืึท ื ื™ื™ึทืข ื‘ื™ื ืข ืื™ื– ื™ื ื™ืฉื™ื™ื™ื˜ื™ื“.

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ืงื™ื™ืคืœ ืคึผืจืึทืกืขืกืึทื– (ืื•ื™ืฃ ืื™ื™ืŸ ืึธื“ืขืจ ืžืขืจ ืžื—ื ื•ืช) ืงืขื ืขืŸ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ื‘ื•ื™ืขืŸ ื“ื™ ื–ืขืœื‘ืข ื‘ื™ื ืข ืื™ืŸ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜. Werf ื ื™ืฆื˜ ืึทืŸ ืึธืคึผื˜ื™ืžื™ืกื˜ื™ืฉ ื‘ืœืึทืงื™ื ื’ ืึทืœื’ืขืจื™ื“ืึทื ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ืคื•ืŸ ืฉืคึผืึธืจืŸ ื“ื™ ืคืจื™ืฉ ื’ืขื–ืืžืœื˜ ื‘ื™ืœื“ ืื™ืŸ ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ. ื“ืขื ื•ื•ืขื’, ื•ื•ืขืŸ ื“ื™ ื ื™ื™ึท ื‘ื™ื ืข ื‘ื•ื™ืขืŸ ืื™ื– ื’ืจื™ื™ื˜, ื•ื•ืึธืจืฃ ื‘ืœืึทืงืก ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ืŸ ืจืื˜ืขื•ื•ืขื˜ ื“ืืจื˜ ื ืคืจื™ืฉ ื’ืขื–ืืžืœื˜ ื‘ื™ืœื“ ื ืืจ ืื•ื™ื‘ ืขืก ืขืงื–ื™ืกื˜ื™ืจื˜ ืžืขืจ ื ื™ืฉื˜ ืงื™ื™ืŸ ืคืืกื™ื’ ื‘ื™ืœื“ (ื“ื•ืจืš ื›ืกื™ืžืข ืื•ืŸ ืื ื“ืขืจืข ืคึผืึทืจืึทืžืขื˜ืขืจืก - ื–ืขืŸ ื“ื™ ื ื™ื™ึทืข ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืกืึทืœืขืงื˜ื™ื ื’ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ืงืึทืฉ).

ื ืคืจืขืฉืœื™ ืคืืจื–ืืžืœื˜ ื‘ื™ืœื“ ืื™ื– ื’ืขืจืึทื ื˜ื™ื“ ืฆื• ื”ืึธื‘ืŸ ืึท ื™ื™ื ืฆื™ืง ื™ื“ืขื ื˜ื™ืคื™ืขืจ ื“ื•ืจืš TIMESTAMP_MILLISEC (ื–ืขืŸ ื ื™ื™ึท ื‘ื™ื ืข ื ืึทืžื™ื ื’ ืคึฟืึธืจืžืึทื˜). ืื™ืŸ ืคืึทืœ ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ ืึท ืคึผืึทืกื™ืง ื‘ื™ืœื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ, werf ื•ื•ืขื˜ ืึทื•ื•ืขืงื•ื•ืึทืจืคืŸ ื“ื™ ืคืจื™ืฉ ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ ื‘ื™ืœื“ ืื•ืŸ ื•ื•ืขื˜ ื ื•ืฆืŸ ื“ื™ ื‘ื™ืœื“ ืคื•ืŸ ื“ื™ ืงืึทืฉ.

ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ: ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืจืึธืฆืขืก ืฆื• ืขื ื“ื™ืงืŸ ื‘ื•ื™ืขืŸ ื“ื™ ื‘ื™ืœื“ (ื“ื™ ืคืึทืกื˜ืึทืกื˜ ืื™ื™ื ืขืจ) ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืจืขื›ื˜ ืฆื• ืงืจืึธื ืขืก ืื™ืŸ ืกื˜ืึทื’ืขืก-ืกื˜ืึธืจื™ื“ื–ืฉ (ืื•ืŸ ื“ืขืžืึธืœื˜ ืขืก ืื™ื– ื“ื™ ืื™ื™ืŸ ื‘ื™ืœื“ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืคึฟืึทืจ ืึทืœืข ื‘ื™ืœื“ืขืจ). ื ืคึผืึทืžืขืœืขืš ื‘ื•ื™ืขืŸ ืคึผืจืึธืฆืขืก ื•ื•ืขื˜ ืงื™ื™ื ืžืึธืœ ืคืึทืจืฉืคึผืึทืจืŸ ืึท ืคืึทืกื˜ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืฉืคึผืึธืจืŸ ื“ื™ ื‘ื•ื™ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืงืจืึทื ื˜ ื‘ื™ื ืข ืื•ืŸ ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื‘ื•ื™ืขืŸ.

โ†’ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ื™ืžืคึผืจื•ื•ื•ื“ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ Dockerfile ื‘ื™ืœื“ืขืจ

ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜, ื“ื™ ืจืขืจื  - ืœื™ื ื™ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึทื’ืขืก ืคึฟืึทืจ ืึท ื‘ื™ืœื“ ื’ืขื‘ื•ื™ื˜ ืคึฟื•ืŸ ืึท Dockerfile ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืื™ื™ืŸ ื‘ื™ื ืข - dockerfile. ื•ื•ืขืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื“ื™ ื›ืกื™ืžืข, ื“ื™ ื˜ืฉืขืงืงืกื•ื ืคื•ืŸ ื“ื™ ื˜ืขืงืขืก ืื™ื– ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ context, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื‘ืขืฉืึทืก ืคึฟืึทืจื–ืึทืžืœื•ื ื’. ืื™ื™ื“ืขืจ ื“ืขื ืคึฟืึทืจื‘ืขืกืขืจื•ื ื’, werf ืจืขืงื•ืจืกื™ื•ื•ืœื™ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืึทืœืข ื˜ืขืงืขืก ืื•ืŸ ื‘ืืงื•ืžืขืŸ ืึท ื˜ืฉืขืงืกื•ื ื“ื•ืจืš ืกืึทืžื™ื ื’ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืื•ืŸ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื™ืขื“ืขืจ ื˜ืขืงืข. ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ื•ื•1.1, werf ืงืขื ืขืŸ ื ื•ืฆืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ื˜ืฉืขืงืงืกืึทืžื– ืกื˜ืึธืจื“ ืื™ืŸ ืึท ื’ื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื’ื™ื˜ ืœืก-ื‘ื•ื™ื. ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ื ืขืžื˜ ืื™ืŸ ื—ืฉื‘ื•ืŸ ืจืขืงืึธืจื“ืก ืื™ืŸ .dockerignore ืื•ืŸ ื˜ืจืึทื•ื•ืขืจืกื– ื“ื™ ื˜ืขืงืข ื‘ื•ื™ื ืจืขืงื•ืจืกื™ื•ื•ืœื™ ื‘ืœื•ื™ื– ื•ื•ืขืŸ ื ื™ื™ื˜ื™ืง. ืื–ื•ื™, ืžื™ืจ ื”ืึธื‘ืŸ ื“ื™ืงืึธื•ืคึผืึทืœื“ ืคื•ืŸ ืœื™ื™ืขื ืขืŸ ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื, ืื•ืŸ ื“ื™ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืึทืœื’ืขืจื™ื“ืึทื ืื•ื™ืฃ ื“ื™ ื’ืจื™ื™ืก context ืื™ื– ื ื™ืฉื˜ ื‘ืึทื˜ื™ื™ื˜ื™ืง.

ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ืื•ื™ืš ื˜ืฉืขืงืก ืึทื ื˜ืจืึทืงืงืขื“ ื˜ืขืงืขืก ืื•ืŸ, ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง, ื ืขืžืขืŸ ื–ื™ื™ ืื™ืŸ ื—ืฉื‘ื•ืŸ ืื™ืŸ ื“ื™ ื˜ืฉืขืงืงืกื•ื.

ื™ืžืคึผืจื•ื•ื•ื“ ืคืึธืจืฉื˜ืขืœื•ื ื’ ื•ื•ืขืŸ ื™ืžืคึผืึธืจื˜ื™ื ื’ ื˜ืขืงืขืก

ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ werf v1.1 ื ื•ืฆืŸ ืึท rsync ืกืขืจื•ื•ืขืจ ื•ื•ืขืŸ ื™ืžืคึผืึธืจื˜ื™ื ื’ ื˜ืขืงืขืก ืคื•ืŸ ืึทืจื˜ืึทืคืึทืงืฅ ืื•ืŸ ื‘ื™ืœื“ืขืจ. ื‘ื™ื– ืึทื”ืขืจ, ื™ืžืคึผืึธืจื˜ื™ื ื’ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ืฆื•ื•ื™ื™ ืกื˜ืขืคึผืก ื ื™ืฆืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืึธื ืงืœืึทืคึผืŸ ืคึฟื•ืŸ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืกื™ืกื˜ืขื.

ื™ืžืคึผืึธืจื˜ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื•ื™ืฃ ืžืึทืงืึธืก ืื™ื– ื ื™ื˜ ืžืขืจ ืœื™ืžื™ื˜ืขื“ ื“ื•ืจืš ื“ืึธืงืงืขืจ ื•ื•ืึทืœื™ื•ืžื–, ืื•ืŸ ื™ืžืคึผืึธืจืฅ ื’ืึทื ืฅ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื•ื•ื™ ืœื™ื ื•ืงืก ืื•ืŸ ื•ื•ื™ื ื“ืึธื•ื–.

ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’

Werf v1.1 ืฉื˜ื™ืฆื˜ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ื˜ืึทื’ื™ื ื’ ื“ื•ืจืš ื‘ื™ืœื“ ืื™ื ื”ืึทืœื˜ - ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’. ื“ื™ ื˜ืึทื’ืก ืคื•ืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ื“ืึธืงืขืจ ื‘ื™ืœื“ืขืจ ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ืขืจ.

ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ื‘ืึทืคึฟืขืœ werf publish --tags-by-stages-signature ืึธื“ืขืจ werf ci-env --tagging-strategy=stages-signature ืืจื•ื™ืก ื‘ื™ืœื“ืขืจ ืคื•ืŸ ื“ื™ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ื‘ื™ื ืข ื›ืกื™ืžืข ื‘ื™ืœื“. ื™ืขื“ืข ื‘ื™ืœื“ ืื™ื– ืื ื’ืขืฆื™ื™ื›ื ื˜ ืžื™ื˜ ืื™ืจ ืื™ื™ื’ืขื ืข ืื•ื ื˜ืขืจืฉืจื™ืคื˜ ืคื•ืŸ ื“ื™ ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ืขื ื‘ื™ืœื“, ื•ื•ืขืœื›ืข ื•ื•ืขืจื˜ ืื•ื™ืกื’ืขืจืขื›ื ื˜ ืœื•ื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื›ืœืœื™ื ื•ื•ื™ ื“ื™ ืจืขื’ื•ืœืขืจืข ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ื™ืขื“ืข ื‘ื™ื ืข ื‘ืื–ื•ื ื“ืขืจ, ืื‘ืขืจ ืื™ื– ืืŸ ืืœื’ืขืžื™ื™ื ืขืจ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจ ืคื•ืŸ ื“ืขื ื‘ื™ืœื“.

ื“ื™ ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื‘ื™ืœื“ ืกื˜ืึทื’ืขืก ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ:

  1. ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ืขื ื‘ื™ืœื“;
  2. ื”ื™ืกื˜ืึธืจื™ืขืก ืคื•ืŸ ื“ื™ ื’ื™ื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ ื•ื•ืึธืก ื’ืขืคื™ืจื˜ ืฆื• ื“ืขื ืื™ื ื”ืึทืœื˜.

ื Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฉื˜ืขื ื“ื™ืง ื”ืื˜ ื‘ืึธืง ืงืึทืžื™ืฅ ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื˜ื•ื™ืฉืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ื˜ืขืงืขืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืงืึทืžื™ืฅ ืžื™ื˜ ื‘ืœื•ื™ื– ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืึธื“ืขืจ ืฆื•ื ื•ื™ืคื’ื™ืกืŸ ืงืึทืžื™ืฅ, ืึธื“ืขืจ ืงืึทืžื™ืฅ ื•ื•ืึธืก ื˜ื•ื™ืฉืŸ ื“ื™ ื˜ืขืงืขืก ืื™ืŸ ื’ื™ื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื™ืžืคึผืึธืจื˜ื™ื“ ืื™ืŸ ื“ื™ ื‘ื™ืœื“.

ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’, ื“ื™ ืคึผืจืึธื‘ืœืขืžืก ืคื•ืŸ ื•ืžื ื™ื™ื˜ื™ืง ืจื™ืกื˜ืึทืจื˜ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืึธื“ืก ืื™ืŸ Kubernetes ืจืขื›ื˜ ืฆื• ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ื ืึธืžืขืŸ ื–ืขื ืขืŸ ืกืึทืœื•ื•ื“, ืืคื™ืœื• ืื•ื™ื‘ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ืื™ื– ื ื™ืฉื˜ ืคืืจืขื ื“ืขืจื˜. ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ื“ืึธืก ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืกื™ื‘ื•ืช ื•ื•ืึธืก ืคึผืจื™ื•ื•ืขื ืฅ ืกื˜ืึธืจื™ื ื’ ืคื™ืœืข ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืคื•ืŸ ืื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืึท ืื™ื™ืŸ ื’ื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ืื•ื™ืš, ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ ืื™ื– ืึท ืžืขืจ ืคืึทืจืœืึธื–ืœืขืš ื˜ืึทื’ื™ื ื’ ืื•ืคึฟืŸ ื•ื•ื™ ื˜ืึทื’ื™ื ื’ ืื•ื™ืฃ Git ืฆื•ื•ื™ื™ื’ืŸ, ื•ื•ื™ื™ึทืœ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ื‘ื™ืœื“ืขืจ ืื™ื– ื ื™ืฉื˜ ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืกื“ืจ ืื™ืŸ ื•ื•ืึธืก ืคึผื™ื™ืคึผืœื™ื™ื ื– ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ื“ื™ ืกื™ ืกื™ืกื˜ืขื ืคึฟืึทืจ ืึทืกืขืžื‘ืึทืœื™ื ื’ ืงื™ื™ืคืœ ืงืึทืžื™ืฅ ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื•ื•ื™ื™ึทื’.

ืขืก ืก ื•ื•ื™ื›ื˜ื™ืง: ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ ืื™ืฆื˜ ืกื˜ืึทื’ืขืก-ื›ืกื™ืžืข - ืื™ื– ื“ืขืจ ื‘ืœื•ื™ื– ืจืขืงืึทืžืขื ื“ื™ื“ ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข. ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืื™ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ werf ci-env (ืกื™ื™ึทื“ืŸ ืื™ืจ ื‘ืคื™ืจื•ืฉ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ืึทื ื“ืขืจืฉ ื˜ืึทื’ื™ื ื’ ืกื›ืขืžืข).

โ†’ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ. ื ื‘ืึทื–ื•ื ื“ืขืจืข ืื•ื™ืกื’ืึทื‘ืข ื•ื•ืขื˜ ืื•ื™ืš ื’ืขื•ื•ื™ื“ืžืขื˜ ื•ื•ืขืจืŸ ืฆื• ื“ืขื ืฉื˜ืจื™ืš. ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ (ืืคืจื™ืœ 3): ืึทืจื˜ื™ืงืœ ืžื™ื˜ ืคึผืจื˜ื™ื ืืจื•ื™ืก.

ืœืึธื’ื™ื ื’ ืœืขื•ื•ืขืœืก

ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื™ืฆื˜ ื”ืื˜ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜, ืฉื˜ืขืœืŸ ื“ื™ ืœืึธื’ื™ื ื’ ืžื“ืจื’ื” ืื•ืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ื‘ืึทื’ื™ื ื’ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข. ืึธืคึผืฆื™ืขืก ืฆื•ื’ืขื’ืขื‘ืŸ --log-quiet, --log-verbose, --log-debug.

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ื›ึผื•ืœืœ ื“ื™ ืžื™ื ื™ืžื•ื ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข:

werf 1.1 ืžืขืœื“ื•ื ื’: ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืฆื• ื“ื™ ื‘ื™ืœื“ืขืจ ื”ื™ื™ึทื ื˜ ืื•ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜

ื•ื•ืขืŸ ื ื™ืฆืŸ ื•ื•ืขืจื‘ืึธื•ืก ืจืขื–ื•ืœื˜ืึทื˜ (--log-verbose) ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื•ื•ื™ werf ืึทืจื‘ืขื˜:

werf 1.1 ืžืขืœื“ื•ื ื’: ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืฆื• ื“ื™ ื‘ื™ืœื“ืขืจ ื”ื™ื™ึทื ื˜ ืื•ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜

ื“ืขื˜ืึทื™ืœืขื“ ืจืขื–ื•ืœื˜ืึทื˜ (--log-debug), ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื•ื•ืึธืจืฃ ื“ื™ื‘ืึทื’ื™ื ื’ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข, ืื•ื™ืš ื›ึผื•ืœืœ ืœืึธื’ืก ืคื•ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืœื™ื™ื‘ืจืขืจื™ื–. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื•ื•ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™ ืึทืงืขืจื–, ืื•ืŸ ืื•ื™ืš ืจืขืงืึธืจื“ื™ืจืŸ ื“ื™ ืขืจื˜ืขืจ ื•ื•ื• ืึท ื‘ืึทื˜ื™ื™ื˜ื™ืง ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ืฆื™ื™ื˜ ืื™ื– ืคืืจื‘ืจืื›ื˜:

werf 1.1 ืžืขืœื“ื•ื ื’: ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืฆื• ื“ื™ ื‘ื™ืœื“ืขืจ ื”ื™ื™ึทื ื˜ ืื•ืŸ ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜

ืฆื•ืงื•ื ืคึฟื˜ ืคึผืœืึทื ื–

ื•ื•ืืจืขื ื•ื ื’! ื“ื™ ืึธืคึผืฆื™ืขืก ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื ื˜ืŸ ื–ืขื ืขืŸ ืื ื’ืขืฆื™ื™ื›ื ื˜ ื•ื•ืงืกื ื•ืžืงืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ื ื™ืžืฆื ืื™ืŸ ื“ืขื ื•ื•ืขืจืกื™ืข, ืคื™ืœืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™ ืื™ืŸ ื“ืขื ืœืขื‘ืŸ ืฆื•ืงื•ื ืคึฟื˜. ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ ื•ื•ืขื˜ ืงื•ืžืขืŸ ื“ื•ืจืš ืึทื•ื˜ืึธ-ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ ื•ื•ืขืŸ ื ื™ืฆืŸ ืžื•ืœื˜ื™ื•ื•ืขืจืฃ. ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืจืงืŸ ื“ื™ ืกื˜ืึทื‘ื™ืœ ื˜ื™ื™ืœ ืคื•ืŸ v1.1 ืคืึทื ื’ืงืฉืึทื ื–; ื–ื™ื™ืขืจ ืื•ื™ืกื–ืขืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ืžืึทื ื•ืึทืœ ื‘ืึทื ื™ืฆืขืจ ื™ื ื˜ืขืจื•ื•ืขื ื˜ื™ืึธืŸ ืื™ืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–.

ื’ืึทื ืฅ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™ ื™ืžืคึผืœืึทืžืึทื ืฅ (ื ื™ื™ึท)

  • ื•ื•ืขืจืกื™ืข: v1.1
  • ื“ืึทื˜ืขืก: ืžืึทืจืฅ
  • ื™ืฉื•ืขื”

ื“ืขืจ ืฆื™ืœ ืื™ื– ืคึฟืึทืจ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืฆื• ื ื•ืฆืŸ ืึท ืžื ื”ื’ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืึธืŸ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ื•ื•ืขืŸ ื ื™ืฆืŸ werf.

ื“ืขืจื•ื•ื™ื™ึทืœ, ืžื™ืจ ื”ืึธื‘ืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ื“ื™ ืคืืœื’ืขื ื“ืข ื’ืึทื ื’ ืคื•ืŸ ืกืึทืœื•ืฉืึทื ื– ืคึฟืึทืจ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื’ืึทืจืึทื ื˜ื™ืจืŸ ืคื•ืœ ืฉื˜ื™ืฆืŸ:

  • ืคืขืœื™ืงื™ื™ึทื˜ (ื‘ื™ื‘ืœื™ืึธื˜ืขืง / ืจืขื’ื™ืกื˜ืจื™)*,
  • AWS ECR
  • ื‘ืœื•ื™*,
  • ื“ืึธืงืงืขืจ ื”ื•ื‘
  • ื’ืงืจ*,
  • ื’ื™ื˜ื”ื•ื‘ ืคึผืึทืงื™ื“ื–ืฉื™ื–
  • GitLab ืจืขื’ื™ืกื˜ืจื™*,
  • ื”ืืจื‘ืขืจ*,
  • ืงื™ื™.

ืกืึทืœื•ืฉืึทื ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ืขืจื•ื•ื™ื™ึทืœ ื’ืึธืจ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš werf ื–ืขื ืขืŸ ืื ื’ืขืฆื™ื™ื›ื ื˜ ืžื™ื˜ ืึทืŸ ืึทืกื˜ืขืจื™ืกืง. ืคึฟืึทืจ ืื ื“ืขืจืข ืขืก ืื™ื– ืฉื˜ื™ืฆืŸ, ืึธื‘ืขืจ ืžื™ื˜ ืœื™ืžื™ื˜ื™ื™ืฉืึทื ื–.

ืฆื•ื•ื™ื™ ื”ื•ื™ืคึผื˜ ืคืจืื‘ืœืขืžืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“:

  • ืขื˜ืœืขื›ืข ืกืึทืœื•ืฉืึทื ื– ื˜ืึธืŸ ื ื™ื˜ ืฉื˜ื™ืฆืŸ ืฆืขื˜ืœ ื‘ืึทื–ื™ื™ึทื˜ื™ืงื•ื ื’ ื ื™ืฆืŸ ื“ื™ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™ ืึทืคึผื™, ืคึผืจืขื•ื•ืขื ื˜ื™ื ื’ ื™ื•ื–ืขืจื– ืคื•ืŸ ื ื™ืฆืŸ ื•ื•ืึธืจืฃ ืก ืึธื˜ืึทืžืึทื˜ื™ืง ืงืœื™ื ืึทืคึผ. ื“ืึธืก ืื™ื– ืืžืช ืคึฟืึทืจ AWS ECR, Docker Hub ืื•ืŸ GitHub ืคึผืึทืงื™ื“ื–ืฉื™ื–.
  • ืขื˜ืœืขื›ืข ืกืึทืœื•ืฉืึทื ื– ื˜ืึธืŸ ื ื™ื˜ ืฉื˜ื™ืฆืŸ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ื ืขืกื˜ืขื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– (ื“ืึธืงืงืขืจ ื”ื•ื‘, ื’ื™ื˜ื”ื•ื‘ ืคึผืึทืงื™ื“ื–ืฉื™ื– ืื•ืŸ ืงื™ื™ึท) ืึธื“ืขืจ ื˜ืึธืŸ ื“ืึธืก, ืึธื‘ืขืจ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืžื•ื–ืŸ ืžืึทื›ืŸ ื–ื™ื™ ืžืึทื ื™ื•ืึทืœื™ ื ื™ืฆืŸ ื“ื™ ื•ื™ ืึธื“ืขืจ ืึทืคึผื™ (AWS ECR).

ืžื™ืจ ื–ืขื ืขืŸ ื’ืขื’ืื ื’ืขืŸ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืื•ืŸ ืื ื“ืขืจืข ืคึผืจืึธื‘ืœืขืžืก ื ื™ืฆืŸ ื’ืขื‘ื•ื™ืจืŸ ืึทืคึผื™ืก ืคื•ืŸ ื“ื™ ืกืึทืœื•ืฉืึทื ื–. ื“ื™ ืึทืจื‘ืขื˜ ืื•ื™ืš ื›ื•ืœืœ ืงืึทื•ื•ืขืจื™ื ื’ ื“ื™ ืคื•ืœ ืฆื™ืงืœ ืคื•ืŸ ื•ื•ืึธืจืฃ ืึธืคึผืขืจืึทืฆื™ืข ืžื™ื˜ ื˜ืขืกืฅ ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™.

ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ื™ืœื“ ื‘ื•ื™ืขืŸ (โ†‘)

  • ื•ื•ืขืจืกื™ืข: v1.2 v1.1 (ื“ื™ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ื“ืขื ืฉื˜ืจื™ืš ืื™ื– ื’ืขื•ื•ืืงืกืŸ)
  • ื“ืึทื˜ืขืก: ืžืึทืจืฅ-ืืคืจื™ืœ ืžืึทืจืฅ
  • ื™ืฉื•ืขื”

ื“ืขืจื•ื•ื™ื™ึทืœ, werf v1.0 ืื•ืŸ v1.1 ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ืื™ื™ืŸ ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ื‘ืึทืœืขื‘ืึธืก ืคึฟืึทืจ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืคื•ืŸ ื‘ื•ื™ืขืŸ ืื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ื‘ื™ืœื“ืขืจ ืื•ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• Kubernetes.

ืฆื• ืขืคึฟืขื ืขืŸ ื“ื™ ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื•ื•ืึธืจืฃ ืึทืจื‘ืขื˜, ื•ื•ืขืŸ ื“ื™ ื‘ื•ื™ืขืŸ ืื•ืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ Kubernetes ื–ืขื ืขืŸ ืœืึธื ื˜ืฉื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืึทืจื‘ื™ื˜ืจืึทืจื™ืฉ ืžื—ื ื•ืช ืื•ืŸ ื“ื™ ืžื—ื ื•ืช ื˜ืึธืŸ ื ื™ื˜ ืจืึทื˜ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ืฉื˜ืึทื˜ ืฆื•ื•ื™ืฉืŸ ื‘ื•ื™ืขืŸ (ืฆื™ื™ึทื˜ื•ื•ื™ื™ึทืœื™ืง ืจืึทื ืขืจื–), werf ืื™ื– ืคืืจืœืื ื’ื˜ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื ื•ืฆืŸ. ื“ื™ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™ ื•ื•ื™ ืึท ื‘ื™ื ืข ืงืจืึธื.

ืคืจื™ืขืจ, ื•ื•ืขืŸ ื“ื™ ื•ื•ืึธืจืฃ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื ืึธืš ื’ืขืจื•ืคืŸ ื“ืึทืคึผ, ืขืก ื”ืื˜ ืึทื–ืึท ืึท ื’ืขืœืขื’ื ื”ื™ื™ื˜. ืึธื‘ืขืจ, ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื™ืฉื•ื– ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื•ื•ืขืŸ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ื“ืขื ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืื™ืŸ werf.

ื˜ืึธืŸ. ื“ืขื ืฉื˜ืจื™ืš ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ื“ื™ ื–ืึทืžืœืขืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ื™ืŸ Kubernetes ืคึผืึธื“ืก, ื•ื•ื™ื™ึทืœ ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ ื“ื™ ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ื“ืึธืงืงืขืจ ืกืขืจื•ื•ืขืจ (ืื™ืŸ ื“ื™ Kubernetes ืคึผืึธื“ ืขืก ืื™ื– ืงื™ื™ืŸ ืึทืงืกืขืก ืฆื• ื“ื™ ื”ื™ื’ืข ื“ืึธืงืงืขืจ ืกืขืจื•ื•ืขืจ, ื•ื•ื™ื™ึทืœ ื“ืขืจ ืคึผืจืึธืฆืขืก ื–ื™ืš ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ, ืื•ืŸ ื•ื•ืึธืจืฃ ืฉื˜ื™ืฆื˜ ื ื™ืฉื˜ ืื•ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ืฉื˜ื™ืฆืŸ. ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ื“ืึธืงืงืขืจ ืกืขืจื•ื•ืขืจ ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ). ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคืœื™ืกื ื“ื™ืง Kubernetes ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืกืขืคึผืขืจืึทื˜ืœื™.

ื‘ืึทืึทืžื˜ืขืจ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ GitHub ืึทืงืฉืึทื ื– (ื ื™ื™ึท)

  • ื•ื•ืขืจืกื™ืข: v1.1
  • ื“ืึทื˜ืขืก: ืžืึทืจืฅ
  • ื™ืฉื•ืขื”

ื›ื•ืœืœ ื•ื•ืึธืจืฃ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืกืขืงืฉืึทื ื– ื“ืขืจืžืึธื ืขืŸ ะธ ืคื™ืจืขืจ), ืื•ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ GitHub ืึทืงืฉืึทืŸ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ werf.

ืื™ืŸ ื“ืขืจืฆื•, ืขืก ื•ื•ืขื˜ ืœืึธื–ืŸ ื•ื•ืึธืจืฃ ืฆื• ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื™ืคืขืžืขืจืึทืœ ืจืึทื ืขืจื–.

ื“ื™ ืžืึทืงืึทื ื™ืงืก ืคื•ืŸ ื‘ืึทื ื™ืฆืขืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ืกื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืคึผืœื™ื™ืกื™ื ื’ ืœืึทื‘ืขืœืก ืื•ื™ืฃ ืฆื™ืขืŸ ืจื™ืงื•ื•ืขืก ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื–ื™ื›ืขืจ ืึทืงืฉืึทื ื– ืฆื• ื‘ื•ื™ืขืŸ / ืจืึธื•ืœื“ ืื•ื™ืก ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืœืืงืืœืข ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืžื™ื˜ werf (โ†“)

  • ื•ื•ืขืจืกื™ืข: v1.1
  • ื“ืึทื˜ืขืก: ื™ืื ื•ืืจ-ืคืขื‘ืจื•ืืจ ืืคืจื™ืœ
  • ื™ืฉื•ืขื”

ื“ืขืจ ื”ื•ื™ืคึผื˜ ืฆื™ืœ ืื™ื– ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ืึท ืื™ื™ืŸ ื™ื•ื ืึทืคื™ื™ื“ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื‘ื™ื™ื“ืข ืœืึธื•ืงืึทืœื™ ืื•ืŸ ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข, ืึธืŸ ืงืึธืžืคึผืœืขืงืก ืึทืงืฉืึทื ื–, ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ.

werf ืื™ื– ืื•ื™ืš ืคืืจืœืื ื’ื˜ ืฆื• ื”ืึธื‘ืŸ ืึทืŸ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืžืึธื“ืข ืื™ืŸ ื•ื•ืึธืก ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทืงื•ื•ืขื ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืื•ืŸ ื’ืœื™ื™ืš ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืคื•ืŸ ื“ื™ ืคืœื™ืกื ื“ื™ืง ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ื‘ืึทื’ื™ื ื’.

ื ื™ื• ืจื™ื™ื ื™ืงื•ื ื’ ืึทืœื’ืขืจื™ื“ืึทื (ื ื™ื™ึท)

  • ื•ื•ืขืจืกื™ืข: v1.1
  • ื“ืึทื˜ืขืก: ืืคืจื™ืœ
  • ื™ืฉื•ืขื”

ืื™ืŸ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹werf v1.1 ืื™ืŸ ื“ื™ ืคึผืจืึธืฆืขื“ื•ืจ cleanup ืขืก ืื™ื– ืงื™ื™ืŸ ื˜ื ื™ื™ึท ืคึฟืึทืจ ืจื™ื™ื ื™ืงื•ื ื’ ื‘ื™ืœื“ืขืจ ืคึฟืึทืจ ื“ื™ ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ ืกื›ืขืžืข - ื“ื™ ื‘ื™ืœื“ืขืจ ื•ื•ืขืœืŸ ืึธื ืงืœื™ื™ึทื‘ืŸ.

ืื•ื™ืš, ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹werf (v1.0 ืื•ืŸ v1.1) ื ื™ืฆื˜ ืคืึทืจืฉื™ื“ืขื ืข ืงืœื™ื ืึทืคึผ ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื‘ื™ืœื“ืขืจ ืืจื•ื™ืก ืื•ื ื˜ืขืจ ื˜ืึทื’ื™ื ื’ ืกืงื™ืžื–: Git ืฆื•ื•ื™ื™ึทื’, Git Tag ืึธื“ืขืจ Git commit.

ื ื ื™ื™ึทืข ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ืจื™ื™ื ื™ืงื•ื ื’ ื‘ื™ืœื“ืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ืงืึทืžื™ืฅ ืื™ืŸ Git, ื™ื•ื ืึทืคื™ื™ื“ ืคึฟืึทืจ ืึทืœืข ื˜ืึทื’ื™ื ื’ ืกืงื™ืžื–, ืื™ื– ื™ื ื•ื•ืขื ื˜ืึทื“:

  • ื”ืึทืœื˜ืŸ ื ื™ื˜ ืžืขืจ ื•ื•ื™ N1 ื‘ื™ืœื“ืขืจ ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ื™ ืœืขืฆื˜ืข N2 ืงืึทืžื™ืฅ ืคึฟืึทืจ ื™ืขื“ืขืจ ื’ื™ื˜ HEAD (ืฆื•ื•ื™ื™ื’ืŸ ืื•ืŸ ื˜ืึทื’ืก).
  • ืกื˜ืึธืจ ื ื™ื˜ ืžืขืจ ื•ื•ื™ N1 ื‘ื™ื ืข ื‘ื™ืœื“ืขืจ ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ื™ ืœืขืฆื˜ืข N2 ืงืึทืžื™ืฅ ืคึฟืึทืจ ื™ืขื“ืขืจ ื’ื™ื˜ HEAD (ืฆื•ื•ื™ื™ื’ืŸ ืื•ืŸ ื˜ืึทื’ืก).
  • ืกื˜ืึธืจ ืึทืœืข ื‘ื™ืœื“ืขืจ ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืื™ืŸ ืงื™ื™ืŸ Kubernetes ืงื ื•ื™ืœ ืจืขืกื•ืจืกืŸ (ืึทืœืข ืงื•ื‘ ืงืึทื ื˜ืขืงืกืฅ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข ืื•ืŸ ื ืึทืžืขืกืคึผืึทืกืขืก ื–ืขื ืขืŸ ืกืงืึทื ื“; ืื™ืจ ืงืขื ืขืŸ ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ืขื ื ืึทื˜ื•ืจ ืžื™ื˜ ืกืคึผืขืฆื™ืขืœ ืึธืคึผืฆื™ืขืก).
  • ืกื˜ืึธืจ ืึทืœืข ื‘ื™ืœื“ืขืจ ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืื™ืŸ ืžื™ื˜ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืžืึทื ื™ืคืขืกืฅ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื™ืŸ ื”ืขืœื ืจื™ืœื™ืกื™ื–.
  • ื ื‘ื™ืœื“ ืงืขื ืขืŸ ื•ื•ืขืจืŸ ืื•ื™ืกื’ืขืžืขืงื˜ ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืงื™ื™ืŸ HEAD ืคึฟื•ืŸ ื’ื™ื˜ (ืœืžืฉืœ, ื•ื•ื™ื™ึทืœ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ HEAD ื–ื™ืš ืื™ื– ืื•ื™ืกื’ืขืžืขืงื˜) ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ื’ืขื ื™ืฆื˜ ืื™ืŸ ืงื™ื™ืŸ ืžืึทื ื™ืคืขืกืฅ ืื™ืŸ ื“ื™ Kubernetes ืงื ื•ื™ืœ ืื•ืŸ ืื™ืŸ ื”ืขืœื ืจื™ืœื™ืกื™ื–.

ืคึผืึทืจืึทืœืขืœ ื‘ื™ืœื“ ื‘ื ื™ืŸ (โ†“)

  • ื•ื•ืขืจืกื™ืข: v1.1
  • ื“ืึทื˜ืขืก: ื™ืื ื•ืืจ-ืคืขื‘ืจื•ืืจ ืืคืจื™ืœ *

ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹werf ืงืึทืœืขืงืฅ ื“ื™ ื‘ื™ืœื“ืขืจ ืื•ืŸ ืึทืจื˜ืึทืคืึทืงืฅ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ werf.yaml, ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™. ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืคึผืึทืจืึทืœืขืœื™ื–ื™ืจืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืคื•ืŸ ืึทืกืขืžื‘ืึทืœื™ื ื’ ืคืจื™ื™ึท ืกื˜ืึทื’ืขืก ืคื•ืŸ ื‘ื™ืœื“ืขืจ ืื•ืŸ ืึทืจื˜ืึทืคืึทืงืฅ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื‘ืึทืงื•ื•ืขื ืื•ืŸ ื™ื ืคืึธืจืžืึทื˜ื™ื•ื• ืจืขื–ื•ืœื˜ืึทื˜.

* ื‘ืึทืžืขืจืงื•ื ื’: ื“ืขืจ ื˜ืขืจืžื™ืŸ ืื™ื– ืฉื™ืคื˜ื™ื“ ืจืขื›ื˜ ืฆื• ืึท ื’ืขื•ื•ืืงืกืŸ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืคึฟืึทืจื–ืึทืžืœื•ื ื’, ื•ื•ืึธืก ื•ื•ืขื˜ ืœื™ื™ื’ืŸ ืžืขืจ ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืกืงื™ื™ืœื™ื ื’ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื•ื•ืึธืจืฃ ืžื™ื˜ GitHub ืึทืงืฉืึทื ื–. ืคึผืึทืจืึทืœืขืœ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื™ื– ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืฉืจื™ื˜, ืคึผืจืึทื•ื•ื™ื™ื“ื™ื ื’ ื•ื•ืขืจื˜ื™ืงืึทืœ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™ ื•ื•ืขืŸ ืึทืกืขืžื‘ืึทืœื™ื ื’ ืื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜.

ื™ื‘ืขืจื’ืึทื ื’ ืฆื• ื”ืขืœื 3 (โ†“)

  • ื•ื•ืขืจืกื™ืข: v1.2
  • ื“ืึทื˜ืขืก: ืคืขื‘ืจื•ืืจ-ืžืึทืจืฅ ืžืื™*

ื›ื•ืœืœ ืžื™ื’ืจืึทื˜ื™ืึธืŸ ืฆื• ื ื™ื™ึท ืงืึธื“ืขื‘ืึทืกืข ื”ืขืœื 3 ืื•ืŸ ืึท ืคึผืจืึธื•ื•ืขืŸ, ื‘ืึทืงื•ื•ืขื ื•ื•ืขื’ ืฆื• ืžื™ื™ื’ืจื™ื™ื˜ ื™ื’ื–ื™ืกื˜ื™ื ื’ ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื–.

* ื‘ืึทืžืขืจืงื•ื ื’: ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื”ืขืœื 3 ื•ื•ืขื˜ ื ื™ืฉื˜ ืœื™ื™ื’ืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืฆื• ื•ื•ืึธืจืฃ, ื•ื•ื™ื™ึทืœ ืึทืœืข ื“ื™ ืฉืœื™ืกืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื”ืขืœื 3 (3-ื•ื•ืขื’ ืฆื•ื ื•ื™ืคื’ื™ืกืŸ ืื•ืŸ ืงื™ื™ืŸ ื˜ื™ืœืขืจ) ื–ืขื ืขืŸ ืฉื•ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ื•ื•ืึธืจืฃ. ื“ืขืจืฆื•, ื•ื•ืึธืจืฃ ื”ืื˜ ื ืึธืš ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืื™ืŸ ื“ืขืจืฆื• ืฆื• ื“ื™ ืื ื’ืขื•ื•ื™ื–ืŸ. ืึธื‘ืขืจ, ื“ื™ ื™ื‘ืขืจื’ืึทื ื’ ื‘ืœื™ื™ื‘ื˜ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคึผืœืึทื ื– ืื•ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“.

Jsonnet ืคึฟืึทืจ ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ Kubernetes ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ (โ†“)

  • ื•ื•ืขืจืกื™ืข: v1.2
  • ื“ืึทื˜ืขืก: ื™ืื ื•ืืจ-ืคืขื‘ืจื•ืืจ ืืคืจื™ืœ-ืžื™ื™ึท

Werf ื•ื•ืขื˜ ืฉื˜ื™ืฆืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ืคึฟืึทืจ Kubernetes ืื™ืŸ Jsonnet ืคึฟืึธืจืžืึทื˜. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, werf ื•ื•ืขื˜ ื‘ืœื™ื™ื‘ืŸ ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื™ื˜ ื”ืขืœื ืื•ืŸ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื‘ืจื™ืจื” ืคื•ืŸ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคึฟืึธืจืžืึทื˜.

ื“ื™ ืกื™ื‘ื” ืื™ื– ืึทื– Go ื˜ืขืžืคึผืœืึทื˜ืขืก, ืœื•ื™ื˜ ืคื™ืœืข ืžืขื ื˜ืฉืŸ, ื”ืึธื‘ืŸ ืึท ื”ื•ื™ืš ืึทืจื™ื™ึทื ื’ืึทื ื’ ืฉืœืึทื‘ืึทืŸ, ืื•ืŸ ื“ื™ ืคืึทืจืฉื˜ื™ื™ื™ืง ืคื•ืŸ ื“ื™ ืงืึธื“ ืคื•ืŸ ื“ื™ ื˜ืขืžืคึผืœืึทื˜ืขืก ืื•ื™ืš ืกืึทืคืขืจื–.

ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื™ื ื˜ืจืึธื•ื“ื•ืกื™ื ื’ ืื ื“ืขืจืข Kubernetes ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืกื™ืกื˜ืขืžืขืŸ (ืœืžืฉืœ, Kustomize) ืื™ื– ืื•ื™ืš ื‘ืึทื˜ืจืึทื›ื˜.

ืึทืจื‘ืขื˜ ืื™ืŸ Kubernetes (โ†“)

  • ื•ื•ืขืจืกื™ืข: v1.2
  • ื“ืึทื˜ืขืก: ืืคืจื™ืœ-ืžืื™ ืžืื™-ื™ื•ื ื™

ืฆื™ืœ: ืขื ืฉื•ืจ ืึทื– ื‘ื™ืœื“ืขืจ ื–ืขื ืขืŸ ื’ืขื‘ื•ื™ื˜ ืื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ืื™ื‘ืขืจื’ืขื’ืขื‘ืŸ ืžื™ื˜ ืจืึทื ืขืจื– ืื™ืŸ Kubernetes. ื™ืขื ืข. ื ื™ื• ื‘ื™ืœื“ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜, ืืจื•ื™ืก, ืงืœื™ื ื“ ืื•ืŸ ื“ื™ืคึผืœื•ื™ื“ ื’ืœื™ื™ึทืš ืคึฟื•ืŸ Kubernetes ืคึผืึธื“ืก.

ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ืขื ืคื™ื™ื™ืงื™ื™ื˜, ืื™ืจ ืขืจืฉื˜ืขืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ื•ื™ืขืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ื™ืœื“ืขืจ (ื–ืขืŸ ื“ื™ ืคื•ื ื˜ ืื•ื™ื‘ืŸ).

ืขืก ืื•ื™ืš ืจื™ืงื•ื•ื™ื™ืขืจื– ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื‘ื™ืœื“ืขืจ ืึธืŸ ืึท ื“ืึธืงืงืขืจ ืกืขืจื•ื•ืขืจ (ื“"ื” ืงืึทื ื™ืงืึธ-ื•ื•ื™ ื‘ื•ื™ืขืŸ ืึธื“ืขืจ ื‘ื•ื™ืขืŸ ืื™ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ).

Werf ื•ื•ืขื˜ ืฉื˜ื™ืฆืŸ ื‘ื ื™ืŸ ืื•ื™ืฃ Kubernetes ื ื™ื˜ ื‘ืœื•ื™ื– ืžื™ื˜ Dockerfile, ืึธื‘ืขืจ ืื•ื™ืš ืžื™ื˜ ื–ื™ื™ืŸ Stapel ื‘ื™ืœื“ืขืจ ืžื™ื˜ ื™ื ืงืจืึทืžืขื ื˜ืึทืœ ืจื™ื‘ื™ืœื“ื– ืื•ืŸ Ansible.

ื ืฉืจื™ื˜ ืฆื• ืขืคืขื ืขืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืžื™ืจ ืœื™ื‘ืข ืื•ื ื“ื–ืขืจ ืงื”ื™ืœื” (ื’ื™ื˜ื”ื•ื‘, ื˜ืขืœืขื’ืจืึทื) ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืึทื– ืžืขืจ ืื•ืŸ ืžืขืจ ืžืขื ื˜ืฉืŸ ื–ืึธืœ ื”ืขืœืคึฟืŸ ืžืึทื›ืŸ ื•ื•ืึธืจืฃ ื‘ืขืกืขืจ, ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืจื™ื›ื˜ื•ื ื’ ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ืžืึทืš ืื•ืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’.

ื’ืึทื ืฅ ืœืขืฆื˜ื ืก ืขืก ืื™ื– ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• GitHub ืคึผืจื•ื™ืขืงื˜ ื‘ืึธืจื“ื– ืื™ืŸ ืกื“ืจ ืฆื• ืึทื ื˜ื“ืขืงืŸ ื“ืขื ืึทืจื‘ืขื˜ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืžืึทื ืฉืึทืคึฟื˜. ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ื‘ืึทืœื“ื™ืง ืคึผืœืึทื ื–, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืงืจืึทื ื˜ ืึทืจื‘ืขื˜ ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื’ืขื‘ื™ื˜ืŸ:

ื ืคึผืœืึทืฅ ืคื•ืŸ ืึทืจื‘ืขื˜ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืžื™ื˜ ื™ืฉื•ื–:

  • ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ื™ืจืขืœืึทื•ื•ืึทื ื˜ ืึธื ืขืก.
  • ื“ื™ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืึธื ืขืก ื–ืขื ืขืŸ ื’ืขื‘ืจืื›ื˜ ืฆื• ืึท ืื™ื™ืŸ ืคึฟืึธืจืžืึทื˜, ืžื™ื˜ ืึท ื’ืขื ื•ื’ ื ื•ืžืขืจ ืคื•ืŸ ื“ืขื˜ืึทื™ืœืก ืื•ืŸ ื“ืขื˜ืึทื™ืœืก.
  • ื ื™ื™ืข ื™ืฉื•ื– ืžื™ื˜ ื™ื™ื“ื™ืึทื– ืื•ืŸ ืคึฟื™ืจืœื™ื™ื’ืŸ ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ.

ื•ื•ื™ ืฆื• ื’ืขื‘ืŸ ื•ื•ืขืจืกื™ืข ื•ื•1.1

ื“ื™ ื•ื•ืขืจืกื™ืข ืื™ื– ื“ืขืจื•ื•ื™ื™ึทืœ ื‘ื ื™ืžืฆื ืื™ืŸ ืงืึทื ืึทืœ 1.1 ืขืึท (ืื™ืŸ ื˜ืฉืึทื ืึทืœื– ืกื˜ืึทื‘ื™ืœ ะธ ืฉื˜ื™ื™ืŸ-ื”ืึทืจื˜ ืจื™ืœื™ืกื™ื– ื•ื•ืขื˜ ื“ืขืจืฉื™ื™ึทื ืขืŸ ื•ื•ื™ ืกื˜ื™ื™ื‘ืึทืœืึทื–ื™ื™ืฉืึทืŸ ืึทืงืขืจื–, ืึธื‘ืขืจ ea ื–ื™ืš ืื™ื– ืฉื•ื™ืŸ ืกื˜ืึทื‘ื™ืœ ื’ืขื ื•ื’ ืคึฟืึทืจ ื ื•ืฆืŸ, ื•ื•ื™ื™ึทืœ ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš ื“ื™ ื˜ืฉืึทื ืึทืœื– ืึทืœืฃ ะธ ื‘ื™ืชื). ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ื“ื•ืจืš ืžื•ืœื˜ื™ื•ื•ืขืจืฃ ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื•ืขื’:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

ืกืึธืฃ

ื“ื™ ื ื™ื™ึทืข ื‘ื™ื ืข ืกื˜ืึธืจื™ื“ื–ืฉ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ืŸ ื‘ื™ืœื“ืขืจ ืึธืคึผื˜ื™ืžื™ื–ืึทื˜ื™ืึธื ืก ืคึฟืึทืจ Stapel ืื•ืŸ Dockerfile ื‘ื™ืœื“ืขืจื– ืขืคืขื ืขืŸ ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ืŸ ืคึผืึทืจืึทืœืขืœ ื‘ื•ื™ืขืŸ ืื™ืŸ ื•ื•ืึธืจืฃ. ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ื•ื•ืขืœืŸ ื‘ืึทืœื“ ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขืจืกื™ืข 1.1 ืื•ืŸ ื•ื•ืขื˜ ื•ื•ืขืจืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื‘ื ื™ืžืฆื ื“ื•ืจืš ื“ื™ ืึทื•ื˜ืึธ-ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืžืขืงืึทื ื™ื–ืึทื (ืคึฟืึทืจ ื™ื•ื–ืขืจื– multiwerf).

ืื™ืŸ ื“ืขื ืžืขืœื“ื•ื ื’, ืึท ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื‘ื™ืœื“ ืื™ื ื”ืึทืœื˜ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ - ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืืจืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืกื˜ืจืึทื˜ืขื’ื™ืข. ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ืึทืคึฟืขืœืŸ ืงืœืึธืฅ ืื™ื– ืื•ื™ืš ืจื™ื•ื•ืขืจืงื˜: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื•ื•ื™ื›ื˜ื™ืง ืฉืจื™ื˜ ืื™ื– ืฆื• ืœื™ื™ื’ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืึทืกืขืžื‘ืœื™ื–. ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ื•ื™ืขืŸ ื”ืึธื‘ืŸ ื•ื•ืขืจืŸ ืึท ื”ืขื›ืขืจ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ื•ื•ื™ ืคึผืึทืจืึทืœืขืœ ื‘ื•ื™ืขืŸ ื–ื™ื ื˜ ื•ื•1.0 ื•ื•ื™ื™ึทืœ ื–ื™ื™ ืœื™ื™ื’ืŸ ืžืขืจ ื•ื•ืขืจื˜ ืฆื• ื•ื•ืึธืจืฃ: ื•ื•ืขืจื˜ื™ืงืึทืœ ืกืงื™ื™ืœื™ื ื’ ืคื•ืŸ ื‘ื™ืœื“ืขืจื– ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื™ืคืขืžืขืจืึทืœ ื‘ื™ืœื“ืขืจื– ืื™ืŸ ืคืึทืจืฉื™ื“ืŸ ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืกื™ืกื˜ืขืžืขืŸ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืžืึทื›ืŸ ื‘ืึทืึทืžื˜ืขืจ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– . ื“ืขืจื™ื‘ืขืจ, ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ื“ืขื“ืœื™ื™ื ื– ืคึฟืึทืจ ืคึผืึทืจืึทืœืขืœ ืึทืกืขืžื‘ืœื™ื– ื–ืขื ืขืŸ ืฉื™ืคื˜ื™ื“. ืึธื‘ืขืจ, ืžื™ืจ ื–ืขื ืขืŸ ืืจื‘ืขื˜ืŸ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื‘ื™ื™ื“ืข ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื– ื•ื•ื™ ื‘ืึทืœื“ ื•ื•ื™ ืžืขื’ืœืขืš.

ื’ื™ื™ ื“ื™ ื ื™ื™ึทืขืก! ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ื‘ืึทื–ื•ื›ืŸ ืื•ื ื“ื– ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ืฆื• ืฉืึทืคึฟืŸ ืึทืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ, ื’ืขืคึฟื™ื ืขืŸ ืึทืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืื•ืŸ ืœื™ื™ื’ืŸ ืึท ืคึผืœื•ืก, ืฉืึทืคึฟืŸ ืึท ืคึผืจ ืึธื“ืขืจ ืคืฉื•ื˜ ื”ื™ื˜ืŸ ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜.

ืคึผืก

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’