CI / CD ู…ุณุคูˆู„ ู†ุธุงู… ุจุณูŠุท


ููŠ ู‡ุฐู‡ ุงู„ุนู…ู„ูŠุฉ ุŒ ุธู‡ุฑุช ุงู„ููƒุฑุฉ ู„ุฃุชู…ุชุฉ ุชุณู„ูŠู… ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ powerhell ุŒ ูˆูƒุฐู„ูƒ ู…ุฒุงู…ู†ุฉ ุนู…ู„ ุงู„ูุฑูŠู‚ ุจูŠู† ู…ุณุคูˆู„ูŠ ุงู„ู†ุธุงู… ู…ุน ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ ุงู„ุชูŠ ุชุนู…ู„ ุนู„ู‰ ุฎูˆุงุฏู… ู…ุฎุชู„ูุฉ. ุชู… ุชุตู…ูŠู… ุงู„ู…ู‚ุงู„ุฉ ู„ู„ู…ุณุคูˆู„ูŠู† ุงู„ุฐูŠู† ูŠุฑุจุญูˆู† ุจุดูƒู„ ุจุณูŠุท ุบูŠุฑ ุงู„ู…ุนุชุงุฏูŠู† ุนู„ู‰ git ูˆ gitlab ูˆ ci / cd ูˆู…ุดูƒู„ุงุช devops ุงู„ุฃุฎุฑู‰ ุŒ ู„ุฐู„ูƒ ุฅุฐุง ูƒู†ุช ู…ู‡ุชู…ู‹ุง ุŒ ูุงุทู„ุจ ู‚ุทุฉ.

ู„ู†ุจุฏุฃ ุจุงู„ู…ุดุงูƒู„ ุงู„ุชูŠ ุธู‡ุฑุช ุนู†ุฏ ุงู„ุนู…ู„


  • ุนุฏู… ูˆุฌูˆุฏ ุฅุตุฏุงุฑุงุช ุ›
  • ุนุฏู… ุงู„ุงุชุณุงู‚ ุจูŠู† ุงู„ุฒู…ู„ุงุก ุนู†ุฏ ูˆุถุน ุงู„ู„ู…ุณุงุช ุงู„ุฃุฎูŠุฑุฉ ุนู„ู‰ ุงู„ู†ุตูˆุต ุ›
  • ูู‚ุฏุงู† ุงู„ู†ุตูˆุต ุงู„ู…ููŠุฏุฉ ุนู†ุฏู…ุง ูŠุบุงุฏุฑ ุงู„ุฒู…ู„ุงุก ุ›
  • ุชุณู„ูŠู… ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ ูŠุฏูˆูŠู‹ุง ุฅู„ู‰ ุฃู…ุงูƒู† ุชู†ููŠุฐู‡ุง ุ›
  • ููˆุถู‰ ุนุงุฏูŠุฉ.

ูƒู„ ู‡ุฐู‡ ุงู„ู…ุดุงูƒู„ ุตุบูŠุฑุฉ ููŠ ุงู„ูˆุงู‚ุน ููŠ ุญุงู„ุงุช ู…ุนุฒูˆู„ุฉ ุŒ ูˆู„ูƒู† ุนู†ุฏู…ุง ูŠูƒูˆู† ูƒู„ ู‡ุฐุง ุจุงู„ูุนู„ ุนู„ู‰ ู†ุทุงู‚ ุงู„ูุฑูŠู‚ ูˆุฃูƒูˆุงู… ู…ู† ุงู„ู†ุตูˆุต ุงู„ุจุฑู…ุฌูŠุฉ ุŒ ุฃูˆุฏ ุฃู† ุฃุฑุชุจ ุงู„ุฃุดูŠุงุก.

ู„ุชุจุณูŠุท ุญูŠุงุชูŠ ุŒ ุงุณุชุฎุฏู…ุช ู…ู†ุชุฌ Gitlab ุงู„ุฑุงุฆุน ุŒ ุงู„ุฐูŠ ุชู… ู†ุดุฑู‡ ุจุงู„ูุนู„ ู…ุนู†ุง ูˆุงุณุชุฎุฏุงู…ู‡ ุจูˆุงุณุทุฉ ุฃุฌู‡ุฒุฉ ุงู„ุชุดููŠุฑ. ู„ู† ุฃููƒุฑ ููŠ ุนู…ู„ูŠุฉ ุชุซุจูŠุช gitlab ูˆ gitlab-runner ุŒ ุณุฃูˆุถุญ ูู‚ุท ุฃู† ู„ุฏูŠู†ุง ุจุงู„ูุนู„ gitlab ู…ู‡ูŠุฃ ุจุชููˆูŠุถ ุงู„ู…ุฌุงู„ ูˆู…ูุดุบู„ ู†ูˆุงูุฐ ู…ู†ูุตู„ ู…ุน ู…ู†ูุฐ PowerShell ุŒ ูˆุงู„ุฐูŠ ุณูŠุคุฏูŠ ู…ู‡ุงู… ุงู„ู†ุดุฑ ุงู„ุฎุงุตุฉ ุจู†ุง. ู„ู„ุจุฑู…ุฌุฉ ุงู„ู†ุตูŠุฉ ุŒ ุฃุณุชุฎุฏู… ุฑู…ุฒ Visual Studio ุงู„ู…ู…ุชุงุฒ.

ู†ู†ุธู… ุงู„ุนู…ู„ ููŠ gitlab


ู‡ุง ู†ุญู† ุฐุง ุŒ ุจุงู„ู†ุณุจุฉ ู„ู„ู…ุจุชุฏุฆูŠู† ุŒ ู†ุญุชุงุฌ ุฅู„ู‰ ุฅู†ุดุงุก ู…ุฌู…ูˆุนุฉ ููŠ gitlab ุŒ ูˆุงู„ุชูŠ ุณุชุดู…ู„ ุฌู…ูŠุน ู…ุณุคูˆู„ูŠ ุงู„ู†ุธุงู… ู„ุฏูŠู†ุง.

ุฅู†ุดุงุก ู…ุฌู…ูˆุนุฉ


ุจุนุฏ ุฐู„ูƒ ุŒ ุฃุถู ุฒู…ู„ุงุฆู†ุง ุฅู„ู‰ ุงู„ุฃุนุถุงุก ุจุญู‚ูˆู‚ ุงู„ู…ุทูˆุฑูŠู† ูˆูŠู…ูƒู†ูƒ ุงู„ุจุฏุก ููŠ ุฅู†ุดุงุก ุงู„ู…ุดุฑูˆุน. ู†ู‚ูˆู… ุจุฅู†ุดุงุก ุงู„ู…ุดุฑูˆุน ููŠ ู…ุฌู…ูˆุนุชู†ุง ุŒ ุญุชู‰ ูŠุชู…ูƒู† ุฒู…ู„ุงุคู†ุง ู…ู† ุงู„ูˆุตูˆู„ ุฅู„ูŠู‡ ุชู„ู‚ุงุฆูŠู‹ุง.

ุฅู†ุดุงุก ุงู„ู…ุดุฑูˆุน


ุจุนุฏ ุฅู†ุดุงุก ุงู„ู…ุดุฑูˆุน ุŒ ููŠ ุงู„ุตูุญุฉ ุงู„ุฃูˆู„ู‰ ุณุชูƒูˆู† ู‡ู†ุงูƒ ุฌู…ูŠุน ุงู„ู†ุตุงุฆุญ ุญูˆู„ ู…ูˆุถูˆุน "ู…ุง ูŠุฌุจ ุงู„ู‚ูŠุงู… ุจู‡ ุจุนุฏ ุฐู„ูƒ". ููŠ ุญุงู„ุชู†ุง ุŒ ู†ุญุชุงุฌ ุฅู„ู‰ ุจุฏุก ุงู„ู…ู„ูุงุช ุงู„ู…ูˆุฌูˆุฏุฉ ู…ู† ู…ุญุทุฉ ุงู„ุนู…ู„ ููŠ gitlab. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ูƒู„ ู‡ุฐุง ูŠูƒู…ู† ููŠ ุงู„ุฏู„ูŠู„ "E: \ scripts \ powershellmegaproject". ุงุณุชุฎุฏู… ุงู„ู…ูˆุฌู‡ ุงู„ู…ู†ุงุณุจ ูˆู‚ู… ุจุงู„ุชู†ููŠุฐ ุนู„ู‰ ุฌู‡ุงุฒ ุงู„ูƒู…ุจูŠูˆุชุฑ ุงู„ุฎุงุต ุจูƒ:

cd E:\scripts\powershellmegaproject git init git remote add origin http://gitlab.domain.net/sysadminsdev/powershellmegaproject.git git add . git commit -m "Initial commit" git push -u origin master 

ุงู„ุจู†ุบูˆ! ุฌู…ูŠุน ู…ู„ูุงุชู†ุง ู…ู† ุฏู„ูŠู„ "E: \ scripts \ powershellmegaproject" ู…ูˆุฌูˆุฏุฉ ุงู„ุขู† ููŠ ู…ุดุฑูˆุนู†ุง.

ู…ุง ู‡ูŠ ุงู„ุฎุทูˆุฉ ุงู„ุชุงู„ูŠุฉุŸ ุงูุชุญ VSCode ูˆุญุงูˆู„ ุฅุฌุฑุงุก ุชุบูŠูŠุฑุงุช ุนู„ู‰ ุจุฑู†ุงู…ุฌ powerhell ุงู„ู†ุตูŠ ุงู„ู…ูˆุฌูˆุฏ ููŠ ู‡ุฐุง ุงู„ุฏู„ูŠู„. ุจุนุฏ ุญูุธ ุงู„ู…ู„ู ุŒ ุณู†ุฑู‰ ุฅุดุนุงุฑู‹ุง ููŠ ู‚ุณู… ุงู„ุชุญูƒู… ุจุงู„ู…ุตุงุฏุฑ ุŒ ุญูŠุซ ูŠู…ูƒู†ูƒ ุฑุคูŠุฉ ุงู„ุชุบูŠูŠุฑุงุช ูˆุงู„ุงู„ุชุฒุงู…. ุจุนุฏ ุฐู„ูƒ ุŒ ู†ุฏูุน ุฅู„ู‰ ุงู„ุฎุงุฏู…:

ุจูˆุงุจุฉ vscode


ุฏุนูˆู†ุง ู†ุชุญู‚ู‚ ู…ู† ู…ูˆู‚ุน ุงู„ู…ุดุฑูˆุน ููŠ gitlab ุŒ ุณูŠูƒูˆู† ู‡ู†ุงูƒ ุงู„ู…ุญุชูˆูŠุงุช ุงู„ูุนู„ูŠุฉ ู„ู„ู…ู„ูุงุช ุŒ ูˆููŠ ุชุงุฑูŠุฎ ุงู„ุงู„ุชุฒุงู…ุงุช ูŠู…ูƒู†ูƒ ุชุชุจุน ุงู„ุชุบูŠูŠุฑุงุช.

ุฅุนุฏุงุฏ CI / CD


ุญุงู† ุงู„ูˆู‚ุช ู„ุชูƒูˆูŠู† ุชุณู„ูŠู… ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ ุฅู„ู‰ ุงู„ุฎุงุฏู…. ู„ูƒูŠ ูŠุนู…ู„ CI / CD ุŒ ูŠุฌุจ ุฃู† ูŠุชูˆูุฑ ุนุฏุงุก ู„ู…ุดุฑูˆุนูƒ. ูŠู…ูƒู†ูƒ ุชุนูŠูŠู†ู‡ ููŠ gitlab ุงู„ู…ุดุฑู - ุงู„ุนุฏุงุฆูŠู† ุฃูˆ ุงุณุชุฎุฏุงู… ุงู„ุนุฏุงุฆูŠู† ุงู„ู…ุดุชุฑูƒูŠู†.

ูˆุงู„ุขู† ุฅู„ู‰ ุงู„ู…ุดุฑูˆุน. ู„ูƒูŠ ูŠุนู…ู„ CI / CD ุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุฅู†ุดุงุก ู…ู„ู .gitlab-ci.yml ููŠ ุงู„ุฏู„ูŠู„ ู…ุน ู…ุดุฑูˆุนู†ุง ู…ุน ูˆุตู ุงู„ุฅุฌุฑุงุกุงุช (ูŠู…ูƒู†ูƒ ุฃูŠุถู‹ุง ุงู„ุงุทู„ุงุน ุนู„ู‰ ุชู„ู…ูŠุญ ูˆุงู„ู…ุณุงุนุฏุฉ ุญูˆู„ ู‡ุฐุง ุนู†ุฏ ุงู„ุงู†ุชู‚ุงู„ ุฅู„ู‰ gitlab - CI / CD - ู‚ุงุฆู…ุฉ ุฎุทูˆุท ุงู„ุฃู†ุงุจูŠุจ). ูŠู…ูƒู†ูƒ ุงุฎุชูŠุงุฑ ุทุฑู‚ ู…ุฎุชู„ูุฉ ู„ุชุณู„ูŠู… ุงู„ู…ู„ูุงุช ุŒ ู…ู† ู…ุฌุฑุฏ ู†ุณุฎ ุงู„ู…ู„ูุงุช ุฅู„ู‰ rsync ุฃูˆ git pull ุฅู„ู‰ ุงู„ุฎุงุฏู… ุงู„ู…ุทู„ูˆุจ. ู†ุธุฑู‹ุง ู„ุฃู†ู†ุง ู†ููƒุฑ ููŠ ุฃุจุณุท ุณูŠู†ุงุฑูŠูˆ ุŒ ูุฅู†ู‡ ุณูŠุชู… ู†ุณุฎ powerhell ูู‚ุท. ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ุงุฌุนู„ ุงู„ู…ุฌู„ุฏ ุงู„ู…ูˆุฌูˆุฏ ุนู„ู‰ ุงู„ุฎุงุฏู… ุงู„ู‡ุฏู ู…ุน ุงู„ู†ุต ุงู„ุจุฑู…ุฌูŠ ู…ุชุงุญู‹ุง ู„ู„ุฌู…ู‡ูˆุฑ ุนู„ู‰ ุงู„ุดุจูƒุฉ ุŒ ูˆู‚ู… ุจุชูˆููŠุฑ ุญู‚ ุงู„ูˆุตูˆู„ ู„ู„ุชุบูŠูŠุฑ ู„ู„ู…ุณุชุฎุฏู… ุงู„ุฐูŠ ุชุนู…ู„ ุฎุฏู…ุฉ gitlab-runner ุชุญุชู‡.

ุงู…ู„ุฃ .gitlab-ci.yml ุจู…ุญุชูˆู‰ ุจุณูŠุท:

 deploy_stage: variables: DEST_DIR: \\srv-megaserver\scripts\powershellmegaproject script: - remove-item -path $DEST_DIR\* -recurse - gci -Recurse | Copy-Item -Destination $DEST_DIR 

ู‡ู†ุง ู†ูƒุชุจ ุงู„ู…ุณุงุฑ ุฅู„ู‰ ุฏู„ูŠู„ู†ุง ููŠ ู…ุชุบูŠุฑ (ููŠ ู…ุดุงุฑูŠุน ุฃุฎุฑู‰ ูŠู…ูƒู†ูƒ ุจุจุณุงุทุฉ ู†ุณุฎ ู‡ุฐุง ุงู„ู…ู„ู ูˆุชุบูŠูŠุฑ ุฏู„ูŠู„ ุงู„ูˆุฌู‡ุฉ) ูˆุจุฃู…ุฑ powershell ุจุณูŠุท ุŒ ู†ู‚ูˆู… ุฃูˆู„ุงู‹ ุจุญุฐู ู…ุญุชูˆูŠุงุช ุงู„ุฏู„ูŠู„ ุจุงู„ูƒุงู…ู„ ุŒ ุซู… ู†ุณุฎ ูƒู„ ุดูŠุก ู…ู† ู…ุดุฑูˆุนู†ุง ุฅู„ู‰ ู‡ุฐุง ุงู„ู…ุฌู„ุฏ.

ุงู„ุงู„ุชุฒุงู… ุŒ ูˆุฏูุน ุงู„ุชุบูŠูŠุฑุงุช ูˆุงู„ุชุญู‚ู‚. ููŠ ู…ุฌู„ุฏู†ุง ุนู„ู‰ ุงู„ุฎุงุฏู… ุŒ ูŠุฌุจ ุชุญุฏูŠุซ ุฌู…ูŠุน ุงู„ู…ู„ูุงุช. ูŠู…ูƒู†ูƒ ุฑุคูŠุฉ ุญุงู„ุฉ ูˆุชู†ููŠุฐ ุฎุท ุงู„ุฃู†ุงุจูŠุจ ููŠ ู†ูุณ ุงู„ู‚ุณู… ู…ู† ุฎุทูˆุท ุงู„ุฃู†ุงุจูŠุจ gitlab - ci / cd - ู…ุซุงู„ ุนู„ู‰ ุงู„ุชู†ููŠุฐ ุงู„ู†ุงุฌุญ:

 Running with gitlab-runner 11.3.1~beta.4.g0aa5179e (0aa5179e) on gl-runner2-windows a24eda81 Using Shell executor... Running on SRV-GL-RUNNER2... Fetching changes... HEAD is now at e6e9a2c update ci file From http://gitlab.domain.net/sysadminsdev/powershellmegaproject e6e9a2c..5f5cfce master -> origin/master Checking out 5f5cfceb as master... Skipping Git submodules setup $ remove-item -path $DEST_DIR\* -recurse $ gci -Recurse | Copy-Item -Destination $DEST_DIR Job succeeded 

ุงูุชุฑุถ ุฃู†ู‡ ุนู„ู‰ ู‡ุฐุง ุงู„ุฎุงุฏู… ุชู… ุจุงู„ูุนู„ ุชูƒูˆูŠู† ู…ู‡ู…ุฉ ู„ุชุดุบูŠู„ ู‡ุฐุง ุงู„ุจุฑู†ุงู…ุฌ ุงู„ู†ุตูŠ ู…ู† ู…ุดุฑูˆุน ููŠ ุงู„ู…ุฌุฏูˆู„ ุŒ ูˆู†ุชูŠุฌุฉ ู„ุฐู„ูƒ ู†ุญุตู„ ุฏุงุฆู…ู‹ุง ุนู„ู‰ ุชู†ููŠุฐ ู…ู„ูุงุช ุงู„ู…ุดุฑูˆุน ุงู„ูุนู„ูŠุฉ.

ู…ุง ุงู„ุฃู…ุฑ ู…ุน ุงู„ุฒู…ู„ุงุกุŸ


ุงู„ุฃู…ุฑ ุจุณูŠุท ุŒ ู‚ู… ุจุฅู†ุดุงุก ู…ุฌู„ุฏ ู„ู„ู…ุดุงุฑูŠุน ุŒ ุงู†ุชู‚ู„ ุฅู„ูŠู‡ ููŠ ps / cmd ูˆุงุณุชู†ุณุฎ ุงู„ู…ุดุฑูˆุน ู„ุฃู†ูุณู†ุง.

 cd e:\projects git clone http://gitlab.domain.net/sysadminsdev/powershellmegaproject.git 

ูƒู„ ุดูŠุก ุŒ ุซู… ุงู„ุนู…ู„ ูู‚ุท ููŠ VSCode ุนู† ุทุฑูŠู‚ ูุชุญ ุงู„ู…ุฌู„ุฏ ุŒ ูˆุงู„ู‚ูŠุงู… ุจุนู…ู„ูŠุงุช ุงู„ุฏูุน ูˆุงู„ุฏูุน.

ู…ุงุฐุง ุญู‚ู‚ู†ุง ู†ุชูŠุฌุฉ ู„ุฐู„ูƒุŸ


  • ูŠุชู… ุชุฎุฒูŠู† ุฌู…ูŠุน ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ ููŠ ุงู„ู…ุณุชูˆุฏุน ุ›
  • ูŠู…ูƒู† ู„ู…ุฌู…ูˆุนุฉ ุงู„ุฅุฏุงุฑุฉ ุจุฃูƒู…ู„ู‡ุง ุงู„ุนู…ู„ ู…ุน ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ ุ›
  • ุฌู…ูŠุน ุงู„ุชุบูŠูŠุฑุงุช ู…ุฑุฆูŠุฉ ููŠ ุงู„ู‚ุตุฉ ุ›
  • ูŠุฑู‰ ุฃูŠ ู…ุณุคูˆู„ ุฌุฏูŠุฏ ุนู„ู‰ ุงู„ููˆุฑ ุฌู…ูŠุน ุงู„ุชุทูˆุฑุงุช ูˆู„ุง ูŠุญุชุงุฌ ุฅู„ู‰ ุงู„ุฑูƒุถ ุญูˆู„ ุงู„ุฎูˆุงุฏู… ูˆู…ุนุฑูุฉ "ุฃูŠู† ูŠุชู… ุฐู„ูƒ" ุ›
  • ูŠุชู… ุชุณู„ูŠู… ุฌู…ูŠุน ุงู„ุชุบูŠูŠุฑุงุช ุงู„ุฅู†ุชุงุฌูŠุฉ ุชู„ู‚ุงุฆูŠู‹ุง ุฅู„ู‰ "ู…ูƒุงู† ุงู„ุนู…ู„ ุงู„ู…ู†ุชุฌ".

ู„ู‚ุฏ ู‚ุถูŠู†ุง ุนู„ู‰ ุฌู…ูŠุน ู…ุดุงูƒู„ู†ุง ุŒ ูˆู‚ู…ู†ุง ุฃูŠุถู‹ุง ุจุชุจุณูŠุท ุญูŠุงุชู†ุง ูƒูุฑูŠู‚.

ู…ูƒุงูุฃุฉ


ุฃุถู ู…ู„ู README.md ุฅู„ู‰ ุฏู„ูŠู„ ุงู„ู…ุดุฑูˆุน ู„ูˆุตู ู…ุง ูŠุญุฏุซ ููŠ ู‡ุฐู‡ ุงู„ุจุฑุงู…ุฌ ุงู„ู†ุตูŠุฉ.
ุฃุถู ู…ู„ู Changelog ู„ูˆุตู ุงู„ุชุบูŠูŠุฑุงุช.

ู…ู„ุงุญุธุฉ: ู…ุงุฐุง ูŠู…ูƒู†ูƒ ุฃู† ุชูุนู„ุŸ ูŠู…ูƒู†ูƒ ุชุญุฑูŠูƒ ุงู„ุนุฏุงุก ููŠ ุงู„ุฑุตูŠู ุŒ ูŠู…ูƒู†ูƒ ุชูƒูˆูŠู† ุงู„ู…ุฌุฏูˆู„ ููŠ ansible ุŒ ู„ุง ูŠุฒุงู„ ุจุฅู…ูƒุงู†ูƒ ุงู„ู‚ูŠุงู… ุจุงู„ูƒุซูŠุฑ ู…ู† ุงู„ุฃุดูŠุงุก ุงู„ุฃูƒุซุฑ ุชุนู‚ูŠุฏู‹ุง ุŒ ูˆู„ูƒู† ุงู„ุบุฑุถ ู…ู† ุงู„ู…ู‚ุงู„ุฉ ูƒุงู† ุชุจุณูŠุท ูู‡ู… ู…ุฌู…ูˆุนุฉ ุงู„ุฃุฏูˆุงุช ู‡ุฐู‡ ู„ู„ู…ุจุชุฏุฆูŠู†.

Source: https://habr.com/ru/post/ar427377/


All Articles