ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ ืื™ืŸ ื“ื™ ื•ื•ืึธืจืฃ ืงืึทืœืขืงื˜ืขืจ: ื•ื•ืึธืก ืื•ืŸ ื•ื•ื™ ื˜ื•ื˜ ืขืก ืึทืจื‘ืขื˜?

ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ ืื™ืŸ ื“ื™ ื•ื•ืึธืจืฃ ืงืึทืœืขืงื˜ืขืจ: ื•ื•ืึธืก ืื•ืŸ ื•ื•ื™ ื˜ื•ื˜ ืขืก ืึทืจื‘ืขื˜?

werf ืื™ื– ืื•ื ื“ื–ืขืจ ืึธืคึฟืŸ ืžืงื•ืจ GitOps CLI ื ื•ืฆืŸ ืคึฟืึทืจ ื‘ื ื™ืŸ ืื•ืŸ ื“ืขืœื™ื•ื•ืขืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• Kubernetes. ืื™ืŸ ืžืขืœื“ื•ื ื’ v1.1 ืึท ื ื™ื™ึทืข ืฉื˜ืจื™ืš ืื™ื– ื‘ืึทืงืขื ืขื  ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืงืึทืœืขืงื˜ืขืจ: ื˜ืึทื’ื™ื ื’ ื‘ื™ืœื“ืขืจ ื“ื•ืจืš ืื™ื ื”ืึทืœื˜ ืึธื“ืขืจ ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’. ื‘ื™ื– ืื™ืฆื˜, ื“ื™ ื˜ื™ืคึผื™ืฉ ื˜ืึทื’ื™ื ื’ ืกื›ืขืžืข ืื™ืŸ ื•ื•ืึธืจืฃ ื™ื ื•ื•ืึทืœื•ื•ื“ ื˜ืึทื’ื™ื ื’ Docker ื‘ื™ืœื“ืขืจ ื“ื•ืจืš Git Tag, Git ืฆื•ื•ื™ื™ึทื’ ืึธื“ืขืจ Git commit. ืึธื‘ืขืจ ืึทืœืข ื“ื™ ืกืงื™ืžื– ื”ืึธื‘ืŸ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืึธืจ ืกืึทืœื•ื•ื“ ื“ื•ืจืš ื“ื™ ื ื™ื™ึทืข ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข. ื“ืขื˜ืึทื™ืœืก ื•ื•ืขื’ืŸ ืื™ื ืื•ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ืึทื–ื•ื™ ื’ื•ื˜ ื–ืขื ืขืŸ ืื•ื ื˜ืขืจ ื“ื™ ืฉื ื™ื™ึทื“ืŸ.

ืจืึธื•ืœื™ื ื’ ืึท ื’ืึทื ื’ ืคื•ืŸ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืคึฟื•ืŸ ืื™ื™ืŸ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

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

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

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

ื˜ืึทื’ื™ื ื’ ื“ื•ืจืš ื’ื™ื˜ ืฆื•ื•ื™ื™ึทื’ ืื•ืŸ ื’ื™ื˜ ื˜ืึทื’

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

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

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

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

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

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

ื˜ืึทื’ื™ื ื’ ื“ื•ืจืš Git commit

werf ืื•ื™ืš ื”ืื˜ ืึท ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ Git ืงืึทืžื™ืฅ.

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

ืึธื‘ืขืจ, ื˜ืึทื’ื™ื ื’ ื“ื•ืจืš Git commit ื”ืื˜ ื“ื™ ื–ืขืœื‘ืข ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ื•ื•ื™ ื˜ืึทื’ื™ื ื’ ื“ื•ืจืš Git ืฆื•ื•ื™ื™ื’ืŸ ืึธื“ืขืจ Git ื˜ืึทื’ืก:

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

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

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

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

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

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

ื•ื•ืึธืก ืื™ื– ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’?

ืึทื–ื•ื™, ื•ื•ืึธืก ืื™ื– ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ - ื˜ืึทื’ื™ื ื’ ื‘ื™ืœื“ืขืจ ื“ื•ืจืš ืื™ื ื”ืึทืœื˜.

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

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

ืึทื–ืึท ืึท ื™ื“ืขื ื˜ื™ืคื™ืขืจ ืงื•ื•ื™ื˜ืœ ืื™ื– ื“ื™ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ื‘ื™ืœื“ ื‘ื™ื ืข ื›ืกื™ืžืข.

ื™ืขื“ืขืจ ื‘ื™ืœื“ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืึท ื’ืึทื ื’ ืคื•ืŸ ืกื˜ืึทื’ืขืก: from, before-install, git-archive, install, imports-after-install, before-setup, ... git-latest-patch ืืื–"ื• ื• ื™ืขื“ืขืจ ื‘ื™ื ืข ื”ืื˜ ืึท ื™ื“ืขื ื˜ื™ืคื™ืขืจ ื•ื•ืึธืก ืจื™ืคืœืขืงืก ื–ื™ื™ึทืŸ ืื™ื ื”ืึทืœื˜ - ื‘ื™ื ืข ื›ืกื™ืžืข (ื‘ื™ื ืข ื›ืกื™ืžืข).

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

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

ื“ื™ ื‘ื™ื ืข ื›ืกื™ืžืข ืกืึทืœื•ื•ื– ืึทืœืข ื“ื™ ืคืจืื‘ืœืขืžืขืŸ:

  • ืงืขื’ื ืฉื˜ืขืœื™ืง ืฆื• ืœื™ื™ื“ื™ืง ื’ื™ื˜ ืงืึทืžื™ืฅ.
  • Resistant to Git ืงืึทืžื™ืฅ ืึทื– ื˜ื•ื™ืฉืŸ ื˜ืขืงืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืฆื• ื“ื™ ื‘ื™ืœื“.
  • ื˜ื•ื˜ ื ื™ืฉื˜ ืคื™ืจืŸ ืฆื• ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืึธื•ื•ื•ืขืจื›ืึธืœื™ื ื’ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื‘ื™ืœื“ ื•ื•ืขืŸ ืจื™ืกื˜ืึทืจื˜ื™ื ื’ ื‘ื•ื™ืขืŸ ืคึฟืึทืจ ืึทืœื˜ ื’ื™ื˜ ืงืึทืžื™ืฅ ืคื•ืŸ ืึท ืฆื•ื•ื™ื™ึทื’.

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

ื•ื•ื™ ืฆื• ื’ืขื‘ืŸ ืื•ืŸ ื ื•ืฆืŸ ืื™ืŸ werf

ื“ืขืจ ื‘ืึทืคึฟืขืœ ืื™ืฆื˜ ื”ืื˜ ืึท ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึธืคึผืฆื™ืข werf publish: --tag-by-stages-signature=true|false

ืื™ืŸ ืึท ืกื™ ืกื™ืกื˜ืขื, ื“ื™ ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ื“ื•ืจืš ื“ื™ ื‘ืึทืคึฟืขืœ werf ci-env. ืคืจื™ืขืจ, ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื“ื™ืคื™ื™ื ื“ ืคึฟืึทืจ ืื™ื werf ci-env --tagging-strategy=tag-or-branch. ืื™ืฆื˜, ืื•ื™ื‘ ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ werf ci-env --tagging-strategy=stages-signature ืึธื“ืขืจ ื˜ืึธืŸ ื ื™ื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ืขื ืึธืคึผืฆื™ืข, werf ื•ื•ืขื˜ ื ื•ืฆืŸ ื“ื™ ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ stages-signature. ืžืึทื ืฉืึทืคึฟื˜ werf ci-env ื•ื•ืขื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืฉื˜ืขืœืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืคืœืึทื’ืก ืคึฟืึทืจ ื“ื™ ื‘ืึทืคึฟืขืœ werf build-and-publish (ืึธื“ืขืจ werf publish), ืึทื–ื•ื™ ืงื™ื™ืŸ ื ืึธืš ืึธืคึผืฆื™ืขืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืคึฟืึทืจ ื“ื™ ืงืึทืžืึทื ื“ื–.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ื‘ืึทืคึฟืขืœ:

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

... ืงืขื ืขืŸ ืžืึทื›ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ื™ืœื“ืขืจ:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

ื“ืึธ 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d ืื™ื– ืึท ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ backendืื•ืŸ f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ื‘ื™ืœื“ ืกื˜ืึทื’ืขืก frontend.

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

ื‘ื™ื™ึทืฉืคึผื™ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ืŸ ืึท ืกื™ ืกื™ืกื˜ืขื:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

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

ืื™ืŸ ื’ืึทื ืฅ

  • ื ื™ื™ึท ืึธืคึผืฆื™ืข werf publish --tag-by-stages-signature=true|false.
  • ื ื™ื™ึท ืึธืคึผืฆื™ืข ื•ื•ืขืจื˜ werf ci-env --tagging-strategy=stages-signature|tag-or-branch (ืื•ื™ื‘ ื ื™ื˜ ืกืคึผืขืกื™ืคื™ืขื“, ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ stages-signature).
  • ืื•ื™ื‘ ืื™ืจ ืคืจื™ืขืจ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ื˜ืึทื’ื™ื ื’ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ Git ืงืึทืžื™ืฅ (WERF_TAG_GIT_COMMIT ืึธื“ืขืจ ืึธืคึผืฆื™ืข werf publish --tag-git-commit COMMIT), ืื•ืŸ ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื“ื™ ื˜ืึทื’ื™ื ื’ ืกื˜ืจืึทื˜ืขื’ื™ืข ืกื˜ืึทื’ืขืก-ื›ืกื™ืžืข.
  • ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ืžื™ื“ ื‘ืึทืฉื˜ื™ืžืขืŸ ื ื™ื™ึท ืคึผืจืึทื“ื–ืฉืขืงืก ืฆื• ื“ื™ ื ื™ื™ึท ื˜ืึทื’ื™ื ื’ ืกื›ืขืžืข.
  • ื•ื•ืขืŸ ื˜ืจืึทื ืกืคืขืจื™ื ื’ ืฆื• werf 1.1, ืขืก ืื™ื– ืงืขื“ื™ื™ึทื™ืง ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ืึทืœื˜ ืคึผืจืึทื“ื–ืฉืขืงืก ืฆื• ื“ื™ ื ื™ื™ึท ื˜ืึทื’ื™ื ื’ ืกื›ืขืžืข, ืึธื‘ืขืจ ื“ื™ ืึทืœื˜. ืงื•ื•ื™ื˜ืœ ืึธื“ืขืจ ืฆื•ื•ื™ื™ึทื’ ืื™ื– ื ืึธืš ื’ืขืฉื˜ื™ืฆื˜.

ืื™ื ื”ืึทืœื˜-ื‘ืื–ื™ืจื˜ ื˜ืึทื’ื™ื ื’ ืกืึทืœื•ื•ื– ืึทืœืข ื“ื™ ืคึผืจืึธื‘ืœืขืžืก ืงืึทื•ื•ืขืจื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ:

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

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

ืคึผืก

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

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

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