ืชืžื™ื›ื” ืขื‘ื•ืจ monorepo ื•- multirepo ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry

ืชืžื™ื›ื” ืขื‘ื•ืจ monorepo ื•- multirepo ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry

ื”ื ื•ืฉื ืฉืœ ืžืื’ืจ ืžื•ื ื• ื ื“ื•ืŸ ื™ื•ืชืจ ืžืคืขื ืื—ืช, ื•ื›ื›ืœืœ, ื’ื•ืจื ืœืžื—ืœื•ืงืช ืคืขื™ืœื” ืžืื•ื“. ืขืœ ื™ื“ื™ ื™ืฆื™ืจื” werf ื›ื›ืœื™ ืงื•ื“ ืคืชื•ื— ืฉื ื•ืขื“ ืœืฉืคืจ ืืช ืชื”ืœื™ืš ื‘ื ื™ื™ืช ืงื•ื“ ื™ื™ืฉื•ืžื™ื ืžืชืžื•ื ื•ืช Git ืœ-Docker (ื•ืœืื—ืจ ืžื›ืŸ ืžืกื™ืจืชืŸ ืœ-Kubernetes), ืื ื—ื ื• ืœื ื—ื•ืฉื‘ื™ื ื”ืจื‘ื” ืขืœ ืื™ื–ื• ื‘ื—ื™ืจื” ื”ื™ื ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ. ืขื‘ื•ืจื ื•, ืขื™ืงืจื™ ืœืกืคืง ืืช ื›ืœ ื”ื“ืจื•ืฉ ืœืชื•ืžื›ื™ ื“ืขื•ืช ืฉื•ื ื•ืช (ืื ื–ื” ืœื ืกื•ืชืจ ืืช ื”ืฉื›ืœ ื”ื™ืฉืจ, ื›ืžื•ื‘ืŸ).

ืชืžื™ื›ืช ื”ืžื•ื ื•-ืจื™ืคื• ื”ืื—ืจื•ื ื” ืฉืœ werf ื”ื™ื ื“ื•ื’ืžื” ื˜ื•ื‘ื” ืœื›ืš. ืื‘ืœ ืงื•ื“ื ื›ืœ, ื‘ื•ืื• ื ื‘ื™ืŸ ืื™ืš ืชืžื™ื›ื” ื–ื• ืงืฉื•ืจื” ื‘ื“ืจืš ื›ืœืœ ืœืฉื™ืžื•ืฉ ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry...

ื ื•ืฉืื™ื

ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืžืฆื‘ ื›ื–ื”. ืœื—ื‘ืจื” ืฆื•ื•ืชื™ ืคื™ืชื•ื— ืจื‘ื™ื ื”ืขื•ื‘ื“ื™ื ืขืœ ืคืจื•ื™ืงื˜ื™ื ืขืฆืžืื™ื™ื. ืจื•ื‘ ื”ื™ื™ืฉื•ืžื™ื ืคื•ืขืœื™ื ืขืœ Kubernetes ื•ืœื›ืŸ ื”ื ืžื›ื™ืœื™ื ืžื›ื•ืœื•ืช. ื›ื“ื™ ืœืื—ืกืŸ ืžื›ื•ืœื•ืช, ืชืžื•ื ื•ืช, ืืชื” ืฆืจื™ืš ืจื™ืฉื•ื (ืจื™ืฉื•ื). ื›ืจื™ืฉื•ื ื›ื–ื”, ื”ื—ื‘ืจื” ืžืฉืชืžืฉืช ื‘- Docker Hub ืขื ื—ืฉื‘ื•ืŸ ื™ื—ื™ื“ COMPANY. ื‘ื“ื•ืžื” ืœืจื•ื‘ ืžืขืจื›ื•ืช ืื—ืกื•ืŸ ืงื•ื“ ื”ืžืงื•ืจ, Docker Hub ืื™ื ื• ืžืืคืฉืจ ื”ื™ืจืจื›ื™ื™ืช ืžืื’ืจ ืžืงื•ื ื ืช, ื›ืžื• COMPANY/PROJECT/IMAGE. ื‘ืžืงืจื” ื›ื–ื”... ื›ื™ืฆื“ ืชื•ื›ืœ ืœืื—ืกืŸ ืืคืœื™ืงืฆื™ื•ืช ืœื ืžื•ื ื•ืœื™ื˜ื™ื•ืช ื‘ืจื™ืฉื•ื ืขื ืžื’ื‘ืœื” ื–ื• ืžื‘ืœื™ ืœื™ืฆื•ืจ ื—ืฉื‘ื•ืŸ ื ืคืจื“ ืœื›ืœ ืคืจื•ื™ืงื˜?

ืชืžื™ื›ื” ืขื‘ื•ืจ monorepo ื•- multirepo ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry

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

ืคืชืจื•ื ื•ืช

ืื ื”ื™ื™ืฉื•ื ืžื•ึนื ื•ึนืœึดื™ื˜ึดื™, ืžื’ื™ืข ื‘ืชืžื•ื ื” ืื—ืช, ืื– ืื™ืŸ ืฉืืœื•ืช ื•ืื ื—ื ื• ืคืฉื•ื˜ ืฉื•ืžืจื™ื ืืช ื”ืชืžื•ื ื•ืช ื‘-Container Registry ืฉืœ ื”ืคืจื•ื™ืงื˜.

ื›ืืฉืจ ื™ื™ืฉื•ื ืžื•ืฆื’ ื›ืจื›ื™ื‘ื™ื ืžืจื•ื‘ื™ื, ืฉื™ืจื•ืชื™ ืžื™ืงืจื•, ืื– ื ื“ืจืฉืช ื’ื™ืฉื” ืžืกื•ื™ืžืช. ื‘ื“ื•ื’ืžื” ืฉืœ ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜ ื˜ื™ืคื•ืกื™ ื”ืžื•ืจื›ื‘ ืžืฉืชื™ ืชืžื•ื ื•ืช: frontend ะธ backend - ื”ืืคืฉืจื•ื™ื•ืช ื”ืืคืฉืจื™ื•ืช ื”ืŸ:

  1. ืื—ืกืŸ ืชืžื•ื ื•ืช ื‘ืžืื’ืจื™ื ืžืงื•ื ื ื™ื ื ืคืจื“ื™ื:

    ืชืžื™ื›ื” ืขื‘ื•ืจ monorepo ื•- multirepo ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry

  2. ืื—ืกืŸ ื”ื›ืœ ื‘ืžืื’ืจ ืื—ื“, ื•ืฉืงื•ืœ ืืช ืฉื ื”ืชืžื•ื ื” ื‘ืชื’, ืœืžืฉืœ, ื‘ืื•ืคืŸ ื”ื‘ื:

    ืชืžื™ื›ื” ืขื‘ื•ืจ monorepo ื•- multirepo ื‘-werf ื•ืžื” ื”ืงืฉืจ ืœ-Docker Registry

NB: ืœืžืขืฉื”, ื™ืฉ ืืคืฉืจื•ืช ื ื•ืกืคืช ืขื ืฉืžื™ืจื” ื‘ืžืื’ืจื™ื ืฉื•ื ื™ื, PROJECT-frontend ะธ PROJECT-backend, ืืš ืœื ื ืฉืงื•ืœ ื–ืืช ื‘ื’ืœืœ ืžื•ืจื›ื‘ื•ืช ื”ืชืžื™ื›ื”, ื”ืืจื’ื•ืŸ ื•ื”ืคืฆืช ื”ื–ื›ื•ื™ื•ืช ื‘ื™ืŸ ื”ืžืฉืชืžืฉื™ื.

ืชืžื™ื›ื” werf

ื‘ืชื—ื™ืœื”, werf ื”ื’ื‘ื™ืœื” ืืช ืขืฆืžื” ืœืžืื’ืจื™ื ืžืงื•ื ื ื™ื - ืœืžืจื‘ื” ื”ืžื–ืœ, ืจื•ื‘ ื”ืจื™ืฉื•ื ืชื•ืžื›ื™ื ื‘ืชื›ื•ื ื” ื–ื•. ื”ื—ืœ ืžื”ื’ืจืกื” v1.0.4-alpha.3, ื ื•ืกืคื” ืขื‘ื•ื“ื” ืขื ืจื™ืฉื•ื ืฉื‘ื”ื ืงื™ื ื•ืŸ ืื™ื ื• ื ืชืžืš, ื•- Docker Hub ื”ื•ื ืื—ื“ ืžื”ื. ืžื ืงื•ื“ื” ื–ื• ื•ืื™ืœืš, ืœืžืฉืชืžืฉ ื™ืฉ ื‘ื—ื™ืจื” ื›ื™ืฆื“ ืœืื—ืกืŸ ืืช ืชืžื•ื ื•ืช ื”ืืคืœื™ืงืฆื™ื”.

ื™ื™ืฉื•ื ื–ืžื™ืŸ ืชื—ืช ืืคืฉืจื•ืช --images-repo-mode=multirepo|monorepo (ื‘ึผึฐืจึดื™ืจึทืช ืžึถื—ื“ึธืœ multirepo, ื›ืœื•ืžืจ ืื—ืกื•ืŸ ื‘ืžืื’ืจื™ื ืžืงื•ื ื ื™ื). ื–ื” ืžื’ื“ื™ืจ ืืช ื”ื“ืคื•ืกื™ื ืฉืœืคื™ื”ื ืชืžื•ื ื•ืช ืžืื•ื—ืกื ื•ืช ื‘ืจื™ืฉื•ื. ื–ื” ืžืกืคื™ืง ื›ื“ื™ ืœื‘ื—ื•ืจ ืืช ื”ืžืฆื‘ ื”ืจืฆื•ื™ ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื•ืช ื”ื‘ืกื™ืกื™ื•ืช, ื•ื›ืœ ื”ืฉืืจ ื™ื™ืฉืืจ ืœืœื ืฉื™ื ื•ื™.

ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืืช ืจื•ื‘ ืืคืฉืจื•ื™ื•ืช ื”-werf ืžืฉืชื ื™ ืกื‘ื™ื‘ื”, ื‘ืžืขืจื›ื•ืช CI / CD, ื‘ื“ืจืš ื›ืœืœ ืงืœ ืœื”ื’ื“ื™ืจ ืืช ืžืฆื‘ ื”ืื—ืกื•ืŸ ื‘ืื•ืคืŸ ื’ืœื•ื‘ืœื™ ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜ ื›ื•ืœื•. ืœื“ื•ื’ืžื”, ื‘ืžืงืจื” ืฉืœ GitLab ืคืฉื•ื˜ ื”ื•ืกืฃ ืžืฉืชื ื” ืกื‘ื™ื‘ื” ื‘ื”ื’ื“ืจื•ืช ื”ืคืจื•ื™ืงื˜: ื”ื’ื“ืจื•ืช -> CI / CD -> ืžืฉืชื ื™ื: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

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

ื”ืฉื˜ืŸ ื ืžืฆื ื‘ืคืจื˜ื™ื

ื”ื”ื‘ื“ืœ ื•ื”ืงื•ืฉื™ ื”ืขื™ืงืจื™ ื‘ื”ื•ืกืคืช ืฉื™ื˜ืช ืื—ืกื•ืŸ ื—ื“ืฉื” ื”ื•ื ื‘ืชื”ืœื™ืš ื ื™ืงื•ื™ ื”ืจื™ืฉื•ื (ืœืชื›ื•ื ื•ืช ื˜ื™ื”ื•ืจ ื”ื ืชืžื›ื•ืช ืขืœ ื™ื“ื™ werf, ืจืื” ืชื”ืœื™ืš ื ื™ืงื™ื•ืŸ).

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

  1. 3 ืืกื˜ืจื˜ื’ื™ื•ืช ืžืงื•ืฉืจื•ืช ืขืœ ื™ื“ื™ ืคืจื™ืžื™ื˜ื™ื‘ื™ื•ืช Git ื›ื’ื•ืŸ ืชื’, ืขื ืฃ ื•-commit;
  2. ืืกื˜ืจื˜ื’ื™ื” 1 ืœืชื’ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืฉืจื™ืจื•ืชื™ื™ื.

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

ื›ืืฉืจ ื ืฉืžืจ ื‘ืžืื’ืจ ืื—ื“ (monorepo), ื‘ืชื’ ื”ืชืžื•ื ื”, ื‘ื ื•ืกืฃ ืœืžื˜ื ืชื’, ื ื™ืชืŸ ืœืื—ืกืŸ ื’ื ืืช ืฉื ื”ืชืžื•ื ื”: PROJECT:frontend-META-TAG. ื›ื“ื™ ืœื”ืคืจื™ื“ ื‘ื™ื ื™ื”ื, ืœื ื”ื›ื ืกื ื• ืฉื•ื ืžืคืจื™ื“ ืกืคืฆื™ืคื™, ืืœื ืคืฉื•ื˜ ื”ื•ืกืคื ื• ืืช ื”ืขืจืš ื”ื“ืจื•ืฉ ืœืชื•ื•ื™ืช ืฉืœ ื”ืชืžื•ื ื” ื”ืกื•ืคื™ืช ื‘ืขืช ื”ืคืจืกื•ื.

NB: ืื ืืชื” ืžืขื•ื ื™ื™ืŸ ืœื”ืกืชื›ืœ ืขืœ ื›ืœ ืžื” ืฉืžืชื•ืืจ ื‘ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ werf, ืื– ื ืงื•ื“ืช ื”ื”ืชื—ืœื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื™ื—ืกื™ ื”ืฆื™ื‘ื•ืจ 1684.

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

ืชึดืžืฆื•ึผืช

ื—ื•ืกืจ ื”ืชืžื™ื›ื” ื‘ืจื™ืฉื•ืื™ื ืœื ืžืงื•ื ื ื™ื ืœื ื”ื™ื” ื’ื•ืจื ื—ื•ืกื ืขื‘ื•ืจื ื• ืื• ืขื‘ื•ืจ ืžืฉืชืžืฉื™ ื”-werf ื”ืžื•ื›ืจื™ื ืœื ื• - ืื—ืจื™ ื”ื›ืœ, ืืชื” ืชืžื™ื“ ื™ื›ื•ืœ ืœื”ืขืœื•ืช ืจื™ืฉื•ื ืชืžื•ื ื•ืช ื ืคืจื“ (ืื• ืœืขื‘ื•ืจ ืœ-Container Registry ืžื•ืชื ื” ื‘-Google Cloud) ... ืขื ื–ืืช, ื”ืกืจืช ื”ื’ื‘ืœื” ื›ื–ื• ื ืจืืชื” ื”ื’ื™ื•ื ื™ืช ื›ื“ื™ ืฉื”ื›ืœื™ ื™ื”ื™ื” ื ื•ื— ื™ื•ืชืจ ืœืงื”ื™ืœืช DevOps ื”ืจื—ื‘ื” ื™ื•ืชืจ. ื‘ื™ื™ืฉื•ื ื–ื”, ื”ืชืžื•ื“ื“ื ื• ืขื ื”ืงื•ืฉื™ ื”ืขื™ืงืจื™ ื‘ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืฉืœ ืžื ื’ื ื•ืŸ ื ื™ืงื•ื™ ื”ืจื™ืฉื•ื ืฉืœ ื”ืžื›ื•ืœื”. ืขื›ืฉื™ื• ื›ืฉื”ื›ืœ ืžื•ื›ืŸ, ื ื—ืžื“ ืœื”ื‘ื™ืŸ ืฉื–ื” ื”ืคืš ืงืœ ื™ื•ืชืจ ืœืžื™ืฉื”ื•, ื•ืœื ื• (ื›ืžืคืชื—ื™ื ื”ืจืืฉื™ื™ื ืฉืœ ื”ืคืจื•ื™ืงื˜) ืœื ื™ื”ื™ื• ืงืฉื™ื™ื ื ื™ื›ืจื™ื ื‘ืชืžื™ื›ื” ื ื•ืกืคืช ื‘ืคื™ืฆ'ืจ ื”ื–ื”.

ื”ื™ืฉืืจื• ืื™ืชื ื• ื•ื‘ืงืจื•ื‘ ืžืื•ื“ ื ืกืคืจ ืœื›ื ืขืœ ื—ื™ื“ื•ืฉื™ื ื ื•ืกืคื™ื ื‘ืชื—ื•ื werf!

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

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

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