เบเบฒเบ™เปเบ—เบฑเบเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบ™เบทเป‰เบญเบซเบฒเปƒเบ™เบ•เบปเบงเป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบก werf: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”?

เบเบฒเบ™เปเบ—เบฑเบเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบ™เบทเป‰เบญเบซเบฒเปƒเบ™เบ•เบปเบงเป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบก werf: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”?

werf เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ GitOps CLI utility เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฑเบš Kubernetes. IN เบ›เปˆเบญเบ v1.1 เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เปƒเบซเบกเปˆโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เปƒเบ™โ€‹เบ•เบปเบงโ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹: tagging เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เป‚เบ”เบโ€‹เป€เบ™เบทเป‰เบญโ€‹เบซเบฒโ€‹เบซเบผเบทโ€‹ tagging เบญเบตเบ‡เปƒเบชเปˆเป€เบ™เบทเป‰เบญเปƒเบ™. เบˆเบปเบ™เบเปˆเบงเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป‚เบ„เบ‡เบเบฒเบ™ tagging เบ›เบปเบเบเบฐเบ•เบดเปƒเบ™ werf เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™ tag เบฎเบนเบšเบžเบฒเบš Docker เป‚เบ”เบ Git tag, เบชเบฒเบ‚เบฒ Git เบซเบผเบท Git commit. เปเบ•เปˆเป‚เบ„เบ‡เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบ‚เปเป‰เป€เบชเบเบ—เบตเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เป‚เบ”เบเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ•เบดเบ”เปเบ—เปเบเปƒเบซเบกเปˆ. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบ”เบตเบซเบผเบฒเบเปเบกเปˆเบ™เบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ•เบฑเบ”.

เป€เบ›เบตเบ”เบ•เบปเบงเบŠเบธเบ”เบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git เบ”เบฝเบง

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

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

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

Tagging เป‚เบ”เบเบชเบฒเบ‚เบฒ Git เปเบฅเบฐ Git tag

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

เป€เบกเบทเปˆเบญเปเบ—เบฑเบ Git เปƒเปเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เปเบ—เบฑเบ Docker เปƒเปเปˆ เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ Docker Registry:

  • 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

เบŠเบทเปˆเบฎเบนเบšเบžเบฒเบšเปƒเปเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เปเบกเปˆเปเบšเบš Helm เป„เบ›เบซเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Kubernetes. เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ werf deploy เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡ image เปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Kubernetes manifests เปเบฅเบฐ restarting เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆเบฎเบนเบšเบžเบฒเบš.

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

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

Tagging เป‚เบ”เบ Git commit

werf เบเบฑเบ‡เบกเบตเบเบปเบ™เบฅเบฐเบเบธเบ” tagging เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš Git commits.

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

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบเบฒเบ™เบ•เบดเบ”เปเบ—เปเบเป‚เบ”เบ Git commit เบกเบตเบ‚เปเป‰เป€เบชเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เปเบ—เบฑเบเป‚เบ”เบเบชเบฒเบ‚เบฒ Git เบซเบผเบท Git tags:

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

เบเบฒเบ™เปเบ—เบฑเบเบŠเบทเปˆเบชเบฒเบ‚เบฒ Git เบšเปเปˆเบชเบฐเบ—เป‰เบญเบ™เป€เบ–เบดเบ‡เป€เบงเบตเบŠเบฑเบ™เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš

เบกเบตเบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ•เบดเบ”เปเบ—เปเบเบชเปเบฒเบฅเบฑเบšเบชเบฒเบ‚เบฒ Git.

เบเบฒเบ™เปเบ—เบฑเบเบ”เป‰เบงเบเบŠเบทเปˆเบชเบฒเบ‚เบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ•เบฒเบšเปƒเบ”เบ—เบตเปˆเบ„เบณเปเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเปƒเบ™เบชเบฒเบ‚เบฒเบ™เบฑเป‰เบ™เบ–เบทเบเป€เบเบฑเบšเบเบณเบ•เบฒเบกเบฅเบณเบ”เบฑเบšเบ•เบฒเบกเบฅเบณเบ”เบฑเบš.

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

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

เบเบฒเบ™เปเบ—เบฑเบเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบ™เบทเป‰เบญเบซเบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡?

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, tagging เบญเบตเบ‡เปƒเบชเปˆเป€เบ™เบทเป‰เบญเบซเบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡ - tagging เบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเป€เบ™เบทเป‰เบญเบซเบฒ.

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบ—เปเบ Docker, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™ Git primitives (Git branch, Git tag ...) เบ—เบตเปˆเปƒเบŠเป‰, เปเบ•เปˆ checksum เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš:

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

เปเบ—เบฑเบเบ•เบปเบงเบฅเบฐเบšเบธเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบงเบ—เบตเบฎเบนเบšเบžเบฒเบš.

เปเบ•เปˆเบฅเบฐเบฎเบนเบšเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบธเบ”เบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™: from, before-install, git-archive, install, imports-after-install, before-setup, ... git-latest-patch เปเบฅเบฐเบญเบทเปˆเบ™เป† เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบกเบตเบ•เบปเบงเบฅเบฐเบšเบธเบ—เบตเปˆเบชเบฐเบ—เป‰เบญเบ™เป€เบ–เบดเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบกเบฑเบ™ โˆ’ เบฅเบฒเบเป€เบŠเบฑเบ™เป€เบงเบ—เบต (เบฅเบฒเบเป€เบŠเบฑเบ™เป€เบงเบ—เบต).

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

เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบฎเบนเบšเบžเบฒเบšเบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ werf.yaml เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบปเปˆเบงเป„เบ›, เบˆเบฐเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐ, เบ•เบฒเบกเบ™เบฑเป‰เบ™, เปเบ—เบฑเบ Docker.

เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบงเบ—เบตเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”:

  • เบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบเบฑเบš Git commits เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ.
  • เบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆ Git เบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฎเบนเบšเบžเบฒเบš.
  • เบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™ overhaling เบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ restarting เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš Git เป€เบเบปเปˆเบฒ commits เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ.

เบ”เบฝเบงเบ™เบตเป‰เบ™เบตเป‰เปเบกเปˆเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เปเบ—เบฑเบเบ—เบตเปˆเปเบ™เบฐเบ™เบณ เปเบฅเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ werf เบชเบณเบฅเบฑเบšเบฅเบฐเบšเบปเบš CI เบ—เบฑเบ‡เปเบปเบ”.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ werf

เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ werf publish: --tag-by-stages-signature=true|false

เปƒเบ™เบฅเบฐเบšเบปเบš CI, เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ•เบดเบ”เปเบ—เปเบเปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ 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 เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบฑเบ™เปƒเบ”เปƒเบ™เปเบกเปˆเปเบšเบš Helm: เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบชเป‰เบฒเบ‡เบŠเบทเปˆเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบฅเบฐเบšเบปเบš CI:

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).
  • เบ–เป‰เบฒเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰เป€เบˆเบปเป‰เบฒเป€เบ„เบตเบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ tagging เบชเปเบฒเบฅเบฑเบš Git commits (WERF_TAG_GIT_COMMIT เบซเบผเบทเบ—เบฒเบ‡เป€เบฅเบทเบญเบ werf publish --tag-git-commit COMMIT), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบˆเบฐเบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบเบปเบ™เบฅเบฐเบเบธเบ” tagging เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบเบฒเบ™โ€‹เบฅเบฒเบโ€‹เป€เบŠเบฑเบ™โ€‹.
  • เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบกเปˆเปƒเบ™เบ—เบฑเบ™เบ—เบตเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ tagging เปƒเบซเบกเปˆ.
  • เป€เบกเบทเปˆเบญเป‚เบญเบ™เป„เบ›เบซเบฒ werf 1.1, เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ›เปˆเบฝเบ™เป‚เบ„เบ‡เบเบฒเบ™เป€เบเบปเปˆเบฒเป„เบ›เบซเบฒเป‚เบ„เบ‡เบเบฒเบ™ tagging เปƒเบซเบกเปˆ, เปเบ•เปˆเป€เบเบปเปˆเบฒ. tag-or-เบชเบฒเบ‚เบฒ เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™.

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

  • Docker tag name resistance to empty Git commits.
  • เบเบฒเบ™เบ•เปเปˆเบ•เป‰เบฒเบ™เบŠเบทเปˆเปเบ—เบฑเบ Docker เบเบฑเบš Git commits เบ—เบตเปˆเบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฎเบนเบšเบžเบฒเบš.
  • เบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™ overhaling เบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ restarting เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบš Git commits เป€เบเบปเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบชเบฒเบ‚เบฒ Git.

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

PS

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

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

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