Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСский сайт Π½Π° Cloudflare Workers Sites

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ Π”ΠΈΠΌΠ°, я Ρ‚Π΅Ρ…Π»ΠΈΠ΄ SysOps-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Wrike. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ 5 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² мСсяц ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ максимально Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сайт ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ. Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π­Ρ‚ΠΎ, скорСС, ΠΌΠΎΠΉ Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΈ впСчатлСния ΠΎΡ‚ знакомства с Π½ΠΎΠ²ΠΎΠΉ для мСня Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ. Π― постарался ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ шаги максимально ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инструкция оказалась ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ для людСй с Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. НадСюсь, Π²Π°ΠΌ понравится. ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ!

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСский сайт Π½Π° Cloudflare Workers Sites

Π˜Ρ‚Π°ΠΊ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ нашли для сСбя простой ΠΈ Π΄Π΅ΡˆΠ΅Π²Ρ‹ΠΉ способ хостинга сайта. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ бСсплатный, ΠΊΠ°ΠΊ описано Π² этой прСкрасной ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Но Π²Π΄Ρ€ΡƒΠ³ Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ скучно ΠΈ хочСтся ΠΏΡ€ΠΈΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ ΠΊ Π΄ΠΈΠ²Π½ΠΎΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΌΠΈΡ€Ρƒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ? Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ± Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ развСртывания ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎ максимуму ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ сайт? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Hugo, Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Gitlab CI/CD, Π½ΠΎ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ускорСниСм? Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅ΠΌ сайт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Cloudflare с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Worker Sites.

Π§Ρ‚ΠΎ трСбуСтся для старта:

Π§Π°ΡΡ‚ΡŒ 1: Установка Hugo

Если Ρƒ вас ΡƒΠΆΠ΅ установлСн Hugo ΠΈΠ»ΠΈ Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ статичСских сайтов (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠΌΠΈ), Ρ‚ΠΎ эту Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

  1. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Hugo с https://github.com/gohugoio/hugo/releases

  2. ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ»  Hugo ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² PATH ΠΏΡƒΡ‚Π΅ΠΉ

  3. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ сайт: hugo new site blog.example.com

  4. МСняСм Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ: cd blog.example.com

  5. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ  Ρ‚Π΅ΠΌΡƒ оформлСния (https://github.com/budparr/gohugo-theme-ananke/releases ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ)

  6. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ пост: hugo new posts/my-amazing-post.md

  7. ДобавляСм ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² созданный Ρ„Π°ΠΉΠ»: content/posts/my-amazing-post.md.
    Когда всС сдСлано, мСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ draft Π½Π° false

  8. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹: hugo -D

Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш статичСский сайт находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ./public ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Ρ€ΡƒΡ‡Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ.

Π§Π°ΡΡ‚ΡŒ 2: НастраиваСм Cloudflare

Π’Π΅ΠΏΠ΅Ρ€ΡŒ разбСрСмся с ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ настройкой Cloudflare. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΌΠ΅Π½ для сайта Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм blog.example.com.

Шаг 1: БоздаСм запись DNS

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ наш Π΄ΠΎΠΌΠ΅Π½, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ мСню DNS. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ A-запись blog ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ для Π½Π΅Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ IP (это ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ рСкомСндация, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ-Ρ‚ΠΎ посимпатичнСй).

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСский сайт Π½Π° Cloudflare Workers Sites

Π¨Π°Π³ 2: Π’ΠΎΠΊΠ΅Π½ Cloudflare

  1. My Profile -> API tokens tab-> Create Token -> Create Custom Token

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСский сайт Π½Π° Cloudflare Workers Sites

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ записями ΠΈ Π·ΠΎΠ½Π°ΠΌΠΈ, Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ  Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Edit для пСрСчислСнных Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, ΠΎΠ½ понадобится Π½Π°ΠΌ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части.

Π¨Π°Π³ 3: ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ accountid ΠΈ zoneid

Domain β†’ Overview β†’ [правая боковая панСль]

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСский сайт Π½Π° Cloudflare Workers SitesΠ­Ρ‚ΠΎ ΠΌΠΎΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ…, поТалуйста πŸ™‚

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈΡ… рядом с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ, ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ понадобятся Π½Π°ΠΌ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части.

Π¨Π°Π³ 4: Активация Workers

Domain β†’ Workers β†’ Manage Workers

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя ΠΈ Ρ‚Π°Ρ€ΠΈΡ„ Workers β†’ Unlimited ($5 Π² мСсяц Π½Π° сСгодняшний дСнь). ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ смоТСтС ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Π§Π°ΡΡ‚ΡŒ 3: ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ (Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅)

Π― сдСлал ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΌ происходит Π½Π° самом Π΄Π΅Π»Π΅. Π₯отя всё это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅:

  1. УстанавливаСм wrangler: npm i @cloudflare/wrangler -g

  2. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²  Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ нашСго Π±Π»ΠΎΠ³Π°: cd blog.example.com

  3. ЗапускаСм wrangler: wrangler init β€” site hugo-worker

  4. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для wrangler (Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ спросят): wrangler config

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ внСсти измСнСния Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный Ρ„Π°ΠΉΠ» wrangler.toml (здСсь ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… настроСк):

  1. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ accountid ΠΈ zoneid

  2. МСняСм route Π½Π° Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ *blog.example.com/*

  3. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ false для workersdev

  4. МСняСм bucket Π½Π° ./public (ΠΈΠ»ΠΈ Π³Π΄Π΅ находится ваш статичСский сайт)

  5. Если Ρƒ вас большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π² ΠΏΡƒΡ‚ΠΈ, Ρ‚ΠΎ Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ скриптС: workers-site/index.js (см. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ handleEvent)

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΡ€Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сайт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ wrangler publish.

Π§Π°ΡΡ‚ΡŒ 4: Автоматизация дСплоя

Π­Ρ‚Π° инструкция составлСна для Gitlab, Π½ΠΎ ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ ΠΈ простоту Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ развСртывания Π² Ρ†Π΅Π»ΠΎΠΌ.

Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ настраиваСм наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

  1. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GitLab ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ сайт: дирСктория blog.example.com со всСм содСрТимым Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

  2. Π—Π°Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ CFAPITOKEN здСсь: Settings β†’ CI/CD β†’ Variables

Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»  .gitlab-ci.yml ΠΈ запускаСм ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» .gitlab-ci.yml Π² ΠΊΠΎΡ€Π½Π΅ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

stages:
  - build
  - deploy

build:
  image: monachus/hugo
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - cd blog.example.com/
    - hugo
  artifacts:
    paths:
      - blog.example.com/public
  only:
    - master # this job will affect only the 'master' branch
  tags:
    - gitlab-org-docker #


deploy:
  image: timbru31/ruby-node:2.3
  stage: deploy
  script:
    - wget https://github.com/cloudflare/wrangler/releases/download/v1.8.4/wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
    - tar xvzf wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
    - cd blog.example.com/
    - ../dist/wrangler publish
  artifacts:
    paths:
      - blog.example.com/public
  only:
    - master # this job will affect only the 'master' branch
  tags:
    - gitlab-org-docker #

ЗапускаСм ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (CI / CD β†’ Pipelines β†’ Run Pipeline) ΠΈΠ»ΠΈ отправляя commit Π² Π²Π΅Ρ‚ΠΊΡƒ master. Вуаля!

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

Π§Ρ‚ΠΎ ΠΆ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я слСгка ΠΏΡ€ΠΈΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ», ΠΈ вСсь процСсс занял Ρ‡ΡƒΡ‚ΡŒ большС дСсяти ΠΌΠΈΠ½ΡƒΡ‚. Π—Π°Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ быстрый сайт с автоматичСским Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ нСсколько свСТих ΠΈΠ΄Π΅ΠΉ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Workers.

 Cloudflare Workers    Hugo    GitLab Ci

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ