ααΆαααΆααα ααααΌααααα»αααααααΆααααααΈααααΌααΈααααΆαα Git αα½αα
ααααΆαααΆαααΆααΏααααΎαα‘αΎααα αααααααααααα·ααΈαα½αααααΌαααΆααααα αααα ααΆααααΆααααα―αααΆαααα αααΎα α¬αα·α α ααΆαα ααααααΆαααααΆααααααΆαααααα’αΆα ααΎαα‘αΎααααα―αααΆαααα ααααΆαααααα½α α¬α αααΎαα’αΆα ααααΌαααΆαα ααααααΆααααα»αααααααα½α ααααα αααααααΌαααααααααΎαααΆααααααααΆαααΆαααααΆααααααΌαα ααα»ααααααΆαααααααααααΆααααααΆαα»αααΌα αα·αααΆαααααααααααααααα ααΆααΆααααααΆααααα½ααααα»αααΆααααααΆααααΆαααααααααα·ααΈαααααααα αααα»αααααΆαααααα½αα
ααΆαααααΆαααΆααα ααααααααααΆαααααα·αααΆα―αααΆααα αα·ααα·αααΆαααααΆααααααααΆαα½ααααααα·ααΈαααα½αα αααα»αααααΈααα αα½αααααΉαααΆαααΈααΆαααα αααα»αααααααααΆα ααααα‘αα α αΎαααΆαα ααααααΆααααααα½αααααΉαααααΌαααΆαα’αα»ααααααΆααααααααΎαααΆα CI/CD ααΆα ααααα‘αααα αααα»αααααααααΈαα½ααα
αααααΆαααΆαααΆααααα ααΆαααΆααα·α α’αααα’αα·ααααααααΆααΏααααααααααααα·ααΈαααα½ααα ααΆααααΆααΈααααΌααΆα αααΎα ααα»ααααααΆααααααΎαααααΆαα αα·αααααααααΆα ααααα‘αααααααΆααααααΆ ... ααΊααΆααΆαα α½αααααα·αα αααΆααααΆααα ααΆααΊααΆααααΆαααΆαααααααααΉαααααΌαααΆααα·ααΆααααΆαααααααααα ααααΆααΈααααΌααΆαααααααΆα αααΎαααΆαααΈααΆαααα αααα»αααααΆαααααααααααα½α α αΎαααΆαα ααααααΆαααΎαα‘αΎαααΆααααααααΎαααΆααααα½ααα αααα»α CI/CD α
ααΆαααΆααααααΆααααααΆααΆ Git αα·αααααΆα Git
α αΌααα·ααΆαααΆαα»αααααΆαααααααΆααααααΆαααΌαα αααα»αααααΌαααΆαααααΎ - ααααΆαα¬ααΆααΆ. αααααΆααααΆααΆ Git ααΌαααΆαααααΌαααΆαααΆααααααΆαααΆαα½ααααααααΆααΆ αααααΆααααΆααΆαα½ααα ααααααα½α ααΆαααΌαααΆαααααα»ααααααα½αααα»αααααααΆααααααααΆααΆαααα αααααΆααααααΆα 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 αααα αΆαα±ααααΎα αα·αα
αΆααααααΎαααααΆααααααααΌαααααΆα‘αΎααα·α αααααΆααααααααΌαααΆααααααΆαααααΆααααααΌαα
αααα αΆα αααα»αααααΈαααααΆααα·α ααααΉαααΆαααααΌαααΆααα·αααΆαααααΆααααααΌαα αΆααααΆααααΈααΆαα ααααααΆααα»α (Git tag) ααα»ααααααΆαααααααΆα Docker ααααααΆααα»ααααα αααααΆααΎαα‘αΎα ααΆαα’αα α αΆααααααΎααααααα·ααΈαααα‘αΎααα·α α αΎαααΆαααα αααααααΆααα αΆαααααα’αΆα ααααΎαα ααΆαα αααααΈααΆαα·αααΆαα ααα»αααα·αααααΆααααΎααααΈααααΎαααΆαααΆαα αΆααααααΎαα‘αΎααα·αααααααααα
ααΆαααααα ααΆαα½αααΉααααααααΆαααααααΆαααΆααααααΆααα αα α»αααααα ααΆα αΆαααΆα ααααα»αααΆαα αα»ααααααααααΆαα Git ααΆα ααααα‘ααααΆα αααΎα α αΎααααα αΆααΎαα‘αΎαααααΆααααα αααΆαααΆααα±ααααααΎαααΆαααααααΆαααα½αα ααα½αααΆαααααα ααΆααΌαα αααααααΆααααααααααααααα ααΆαααα»αααΎααααααααα·ααααα»αααααΆαα ααΆααΆααΆααααααΎααααα»αααΆααα½ααααα αΌαααααΆααΌαααααΆααααααΆα αααΎααα αααα»αααααΆαααααα½α α αΎααααααΎαααααΆα Docker ααΎααααΈαα»αα±ααααΆαααΆαα αΆααααααΎαα‘αΎααα·αααααα·αα αΆαααΆα αα
ααΆαααΆααααααΆαααα Git commit
werf ααααΆααα»αααααΆαααααααΆααααααΆααααααΆααααααΉα 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 ααααααααα αΌααααααα α»ααααααααααΌαααΆαααΎαααααΎαααΆααααααΆααααΆααααααααΉαααααΆαααααααααΆαα)α ααααααΆαααΆααααα αα·αααααααααααααααααααΆααα’ααααΆααααααΏαααααα α αΎαααααΌαααααΆααα·ααΈαααα’αΆα αα»αα α·αααααΆαααΆαααα ααΎααααΈαααααααΆαααααα αΆααΆααΌαααααΆαααααααα
ααΎβα’αααΈβαα βααΆβααΆαβααΆααβααααΆαβααα’ααβααΎβααΆαα·ααΆ?
ααΌα αααα α’αααΈβαα βααΆβααΆαβααΆααβααααΆαβααΆαβααΆαα·ααΆβααΊβααΆαβααΆααβααααΆαβααΌαααΆαβααΆαβααΆαα·ααΆα
ααΎααααΈαααααΎα Docker tags ααΆαα·ααααααΆ Git primitives (Git branch, Git tag...) αααααααΌαααΆαααααΎαα ααα»ααααααΆ checksum αααααααΆααααΆαα½αα
- ααΆαα·ααΆααααΌαααΆα. ααααΆαααααααααΆααααΌαααΆααααα»ααααα αΆααααΈααααΉαααΆαααααααΆα αα ααααααααΎαααααααααΈ α§ααααααααααα’ααααααααΆααααααΉααα·αααααΆααααααΌααα ααααα·αααΎα―αααΆααααα»αααΌαααΆααα·αααΆαααααΆααααααΌαα
- αααααααα·ααααΆααααααΎαααΌαααΆαααααα αααα»α Git. ααΌαααΆααααααααΆααααΆαα½αααΆααΆ Git αααααααααΆ αα·ααααααααα·αααααΎααααααααααΆααΆαααα werf ααΉαααΆαααααΆαααααααααΆαααααααααααΆα
ααααΆααααααΆααα’ααααααααΆαααααααααΊααΆα’αααΈαααααα α ααΆ α αααααααΆααΎααΆαααΌαααΆα.
ααΌαααΆαααΈαα½ααααΆαααααα»αααααααΆααααΆαα from
, before-install
, git-archive
, install
, imports-after-install
, before-setup
... git-latest-patch
αα ααααΆααααΆαααΈαα½ααααΆαα§ααααααααααΆααααααααα»ααααα
αΆααααΈααααΉαααΆαααααααΆ β α αααααααΆααΎααΆα (α αααααααΆααΎααΆα).
ααΌαααΆαα α»αααααααααααΆαααααΆααααΆαααΆαααααααααΌαααΆαααΆααααααΆααααα’αααΈαααααα α ααΆα αααααααΆαααααα»αααααααΆααααΆαααΆααααα - α αααααααΆααααΆααααΆα, - αααααΆααΌαα αααααΆαααααααααααΆααααΆαααααΌαααΆαα
αααααΆααααΌαααΆαααΈαα½ααααΈααΆαααααααα
ααΆαααααααα werf.yaml
αααα»αααααΈααΌαα
ααΆααΉαααΆαα αααααααΆααααΆαααααα½αααααααΆ α αΎαααΆαααα ααααΆα Docker α
α αααααααΆααααΆααααΆααααααααΆααααα αΆααΆααα’αααααα
- αααααΉαααΆααααααααΉααα Git αααα
- αααααΉα Git ααααααααΆααααΆααααααΌαα―αααΆαααααα·αααΆααααααΉαααΌαααΆαα
- αα·αααΆαα±ααααΆααααα αΆααααΆααα½ααα»ααααααα αα α»ααααααααααΌαααΆααα αααα αΆααααααΎαααΆαααααΆαααΆα‘αΎααα·ααααααΆαα Git α αΆααααααΆααΆαα½αα
α₯α‘αΌαααααααααΊααΆαα»αααααΆαααααααΆααααααΆααααααΆαααααΆα αα·αααΆααααΆαααΎααα αααα»α 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
ααααααΆαααααααα’αααΈααΆααααααααΆααα αααα»αα―αααΆαα
-
αα β ααΆαααααα»αααααααΆα (ααααα»ααα) ; -
ααααΎααΆαααΆαα½α CI/CD β ααααααΆαααΌαα β ααααΆααααΆα-α αααααααΆ ; -
ααΆααα½ααααα αΌαααΆαα½α GitLab CI/CD β .gitlab-ci.yml .
ααα»α
- αααααΎαααααΈα
werf publish --tag-by-stages-signature=true|false
. - ααααααααααΎαααααΈα
werf ci-env --tagging-strategy=stages-signature|tag-or-branch
(ααααα·αααΎαα·αααΆααααααΆαααα ααααΆαααΎαααΉαααΆαstages-signature
). - ααααα·αααΎα’αααααααΆααααααΎαααααΎαααΆααααααΆααααααΆαα Git commits (
WERF_TAG_GIT_COMMIT
α¬αααααΎαwerf publish --tag-git-commit COMMIT
) αααααΆααααααααΌαααααΆααααΆααααΌααα αα»αααααΆαααααααΆααααααΆα ααααΆααααΆα - α αααααααΆ. - ααΆααΆααΆαααα’αααααΎαααΆααα»αααΎααααΈααααΌαααααααααααΈααααΆαααα αααααααΆαααααΆααααααΆαααααΈα
- αα αααααααααα werf 1.1 ααΆααααΌαααΆαααααΆαα±ααααααΌαααααααα αΆαααα αααααααΆαααααααΆαααααΈ ααα»ααααα αΆαα ααααΆαα¬ααΆααΆ αα ααααααΌαααΆαααΆααααα
ααΆαααΆααααααΆαααα’ααααΎααααΉαααΆααααααααΆααααα αΆααΆααα’αααααααΆααα αααα»αα’αααααα
- ααΆααααααΉααααααααααΆα Docker α αααα Git commits αααα
- ααΆαααααααααααααααΆα Docker αα Git αααααααΉααααααααααΆααααααΌαα―αααΆαααααα·αααΆααααααΉαααΌαααΆαα
- αα·αααΆαα±ααααΆααααα αΆααααΆααα½ααα»ααααααα αα α»ααααααααααΌαααΆααα αααα αΆααααααΎαααΆαααααΆαααΆα‘αΎααα·ααααααΆαα Git α αΆαααααααΆααααΆααΆ Git α
ααααΎβααΆ! α αΎααα»αααααα
αααααααΎααα
PS
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
ααΆαα ααααααΆα werf 1.1α ααΆααααααα’αααα’αααααΆααααααααααα αα·ααααααΆααααααΆααα’ααΆαα Β» - Β«
ααΆαααααΆα werf 1.0 ααΆααααααααΆαα ααΎ GitOps ααααΌαααααΎαααΆαααΆααΆαα½αααΆ ααααΆαααΆα αα·ααααααΆα Β» - Β«
werf - α§αααααααααααΎααααααΆαα CI / CD αα αααα»α Kubernetes (αα·αααααΆαααΌαα αα·ααααΆαααΆαααααΈααα’αΌ) Β» - αααααΈααααΆαααααααααΆααα’αααΈααΆαα
αααααααα·ααα
αααα»α werf:
- Β«
ααΆααα½ααααα αΌαααααΆ 3 ααααΌααα werf: ααΆαααΆαααααααΆα Kubernetes ααΆαα½α Helm "αα ααΎ steroids" Β» - Β«
ααΆαααααΎααααΆαα werf ααΎααααΈααΆααα ααααΆααΆα Helm αααααα»αααααΆα Β» - Β«
ααΆαααΆαααααααααΆαα monorepo αα·α multirepo αα αααα»α werf αα·αα’αααΈααα Docker Registry ααααΌαααααΎααΆαα½αααΆα Β» - Β«
α₯α‘αΌααααα’αααα’αΆα αααααΎαααΌαααΆα Docker αα αααα»α werf αααααααΎ Dockerfile ααααααΆα "α
- Β«
ααααα: www.habr.com