πŸ“œ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitLab CI / CD для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

by itisgood
ЦСль этого руководства – Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ GitLab CI / CD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ людям Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° 30 ΠΌΠΈΠ½ΡƒΡ‚, Π½Π΅ читая всю Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ GitLab.
Π­Ρ‚ΠΎ руководство ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с инструмСнтами CI / CD, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ GitLab CI / CD.
Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ я ΠΊΡ€Π°Ρ‚ΠΊΠΎ расскаТу, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CI / CD, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт GitLab ΠΈ пошаговоС руководство ΠΏΠΎ созданию .gitlab-ci.yaml с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ прилоТСния.

CI/CD

CI / CD – это сокращСниС Continuous Integration/ Continuous Delivery / Continuous Deployment (Ρ‚.Π΅. Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ / Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ доставки / Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развСртывания).
ΠŸΡ€ΠΎΡ†Π΅ΡΡ позволяСт ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с большСй ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.
CI / CD устраняСт Ρ€ΡƒΡ‡Π½ΠΎΠ΅ взаимодСйствиС с Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, автоматизируя всС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ развСртывания ΠΊΠΎΠ΄Π° Π² производство.
Одной ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ являСтся интСграция Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов ΠΈ систСм, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для построСния ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° CI / CD.
НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² Bitbucket, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½Π°Π±ΠΎΡ€Π°Ρ… автоматичСских тСстов Π² частной инфраструктурС ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² AWS ΠΈΠ»ΠΈ Microsoft Azure.
Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ прилоТСния, располоТСнныС Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… систСмах, способствовали Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ Ρ†Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ CI / CD.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ GitLab CI/CD?

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ GitLab CI / CD ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ CI / CD с ΠΎΠ΄Π½ΠΈΠΌ инструмСнтом, это быстро ΠΈ ΠΎΠ½ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GitLab CI / CD я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ заявки, ΠΌΡ‘Ρ€Π΄ΠΆ рСквСсты, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ инструмСнты CI / CD Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния.

По сути, это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½.

GitLab CI / CDΒ  запускаСт сбору GitLab Runners.

Π Π°Π½Π½Π΅Ρ€Ρ‹ – это ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ шаги Ρ‡Π΅Ρ€Π΅Π· API GitLab CI.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ GitLab Ρ€Π°Π½Π½Π΅Ρ€Π°Ρ… ΠΏΠΎ этой ссылкС.

НаконСц, это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, поэтому я всСгда ΠΌΠΎΠ³Ρƒ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² Π±Π°Π·Ρƒ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΊΠ΅Ρ‚ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ API-интСрфСйс Node.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ список ΠΊΠ½ΠΈΠ³ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ наш ΠΊΠΎΠ΄ Π½Π° Ρ‚Ρ€ΠΈ этапа: сборка, тСстированиС ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅.

Пайплайн – это Π³Ρ€ΡƒΠΏΠΏΠ° шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сгруппированы ΠΏΠΎ сходным характСристикам.

Пайплайн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° устанавливаСт зависимости, запускаСт Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΊΠΎΠ΄ΠΎΠΌ.

Пайплайн Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ запускаСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты ΠΈ создаСт Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π°.

НаконСц, Deploy Pipeline Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ для Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° ΠΈ срСды.

Π¨Π°Π³ΠΈ, выполняСмыС трСмя ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°ΠΌΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ заданиями.

Когда Π²Ρ‹ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠ΅Ρ€ΠΈΡŽ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΏΠΎ этим характСристикам, это называСтся этапами.

Π Π°Π±ΠΎΡ‡ΠΈΠ΅ мСста ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ для Ρ‚Ρ€ΡƒΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ².

Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы ΠΏΠΎ этапам, Π° этапы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ, этапов ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ²:

А.) Π‘Π±ΠΎΡ€ΠΊΠ°
Β Β Β Β Β  я. Установка зависимостСй NPM
Β Β Β Β Β  II. Запуск ES-Linter
Β Β Β Β Β  III. Запуск Code-Minifier

B.) ВСст
Β Β Β Β Β  I. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡŽΠ½ΠΈΡ‚, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ сквозной тСст.
Β Β Β Β Β  II. ЗапуститС pkg для компиляции прилоТСния Node.js
C.) Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅
Β Β Β Β Β  I. производство
Β Β Β Β Β Β Β Β  1.) Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ экзСмпляр EC2 Π½Π° AWS
Β Β Β Β Β  II. инсцСнировка
Β Β Β Β Β Β Β Β  1.) Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° локальном сСрвСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
Π’ этой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ всС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°.
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ – сборка, тСстированиС ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ – этапы, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π² этих Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… – задания.
Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ это Π² Ρ„Π°ΠΉΠ»Π΅ yaml GitLab CI / CD.

ИспользованиС GitLab CI / CD

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GitLab CI / CD, создайтС Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ .gitlab-ci.yml Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitLab ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ yaml:

image: node:10.5.0

stages:
  - build
  - test
  - deploy

before_script:
  - npm install

Как я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Ρ€Π°Π½Π΅Π΅, GitLab CI / CD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π½Π½Π΅Ρ€Ρ‹ для выполнСния ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ².

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наш Ρ€Π°Π½Π½Π΅Ρ€ основывался, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ image.

Π’ нашСм случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Node.js.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° stages позволяСт Π½Π°ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этап для всСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Задания Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² порядкС, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ stages.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° before_script ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запуска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ всСми заданиями.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с нашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, посвящСнной этапу сборки.

ΠœΡ‹ собираСмся Π½Π°Π·Π²Π°Ρ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ build-min-code.

Π’ этой Π΄ΠΆΠΎΠ±Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ script.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° script – это скрипт ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π½Π½Π΅Ρ€Π°.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ собираСмся Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° этап Β«buildΒ». Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° этап, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ stage.

build-min-code:
  stage: build
  script:
    - npm install
    - npm run minifier
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄ΠΆΠΎΠ±Π°, связанная с нашСй стадиСй сборки, ΠΈ ΠΌΡ‹ собираСмся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это для нашСй стадии тСстирования.
НашС тСст Π΄ΠΆΠΎΠ±Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ run-unit-test, ΠΈ ΠΌΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипт npm Π² нашСм API для запуска тСстового тСста npm.
run-unit-test:
  stage: test
  script:
    - npm run test
НаконСц, ΠΌΡ‹ собираСмся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этапа развСртывания: deploy-production, deploy-staging.
Π’ этом случаС Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… задания для развСртывания (ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ производство).
Π­Ρ‚ΠΈ Π΄ΠΆΠΎΠ±Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ схСму, Ρ‡Ρ‚ΠΎ ΠΈ наши ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅, Π½ΠΎ с нСбольшими измСнСниями.
Π’ настоящСС врСмя всС наши задания автоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ любом Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΠ΄Π°.
ΠœΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ внСдряСм наш ΠΊΠΎΠ΄ Π² стадии staging ΠΈ production..
Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ only.
Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΈΠΌΠ΅Π½Π° Π²Π΅Ρ‚ΠΎΠΊ ΠΈ Ρ‚Π΅Π³ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅.
Π”ΠΆΠΎΠ±Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
deploy-staging:
 stage: deploy
 script:
   - npm run deploy-stage
 only:
   - develop

deploy-production:
 stage: deploy
 script:
   - npm run deploy-prod
 only:
   - master
Π’ нашСм Π·Π°Π΄Π°Π½ΠΈΠΈ deploy-staging Ρ€Π°Π½Π½Π΅Ρ€ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ измСнСния Π² Π²Π΅Ρ‚ΠΊΠ΅ develop ΠΈ deploy-production – master Π²Π΅Ρ‚Π²ΠΈ.
НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊΠΎΠ΄Π° Π² master Π²Π΅Ρ‚ΠΊΡƒ.
Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС Ρ‚Ρ€ΠΈ этапа ΠΈ задания, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ deploy-staging, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠ΄Π° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ Π² master Π²Π΅Ρ‚ΠΊΡƒ.
GitLab CI / CD поставляСтся с ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным интСрфСйсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ задания ΠΈ этапы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊΠΈΠ΅ ошибки Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² процСссС сборки.
НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия Ρ„Π°ΠΉΠ»Π° .gitlab-ci.yaml.
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²ΠΎΡ‚ ссылка Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния.
image: node:10.5.0

stages:
  - build
  - test
  - deploy

before_script:
  - npm install

build-min-code:
  stage: build
  script:
    - npm install
    - npm run minifier

run-unit-test:
  stage: test
  script:
    - npm run test

deploy-staging:
  stage: deploy
  script:
    - npm run deploy-stage
  only:
    - develop

deploy-production:
  stage: deploy
  script:
    - npm run deploy-prod
  only:
    - master

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ GitLab CI / CD.

GitLab CI / CD ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π· ΠΊΠΎΠ΄ΠΎΠ², создавая ΠΈ публикуя ΠΎΠ±Ρ€Π°Π·Ρ‹ Docker для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонними инструмСнтами.

Π― надСюсь, Ρ‡Ρ‚ΠΎ Π²Ρ‹ нашли этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Бпасибо Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅!

 

 

Loading

You may also like

Leave a Comment