Мій перший Jenkins pipeline впав 17 разів, перш ніж нарешті став зеленим. Не два. Не п'ять. Сімнадцять червоних кружечків поспіль, за один вечір. Якщо ти зараз вчиш DevOps і твій перший pipeline впав так само — хочу сказати тобі те, чого мені ніхто не сказав: цей червоний кружечок, що крутиться, не доказ того, що ти нездара. Це і є навчальна програма. Увесь курс цілком — і єдина його версія, яка в мене реально вклалася в голову.

Ось як це було і чого мене навчили ті сімнадцять падінь — того, чого не навчить жоден сертифікат.

Схема, що на папері виглядала простіше нікуди

План був майже образливо простим. Jenkins у Docker-контейнері. Jenkinsfile у репозиторії. Build agent, щоб усе це запускати. Пушиш код, дивишся, як він збирається, забираєш артефакт. Уся ментальна модель на цьому й закінчувалася.

Jenkins я поставив, написав начебто валідний Jenkinsfile і при цьому абсолютно не розумів, що відбувається під капотом. Саме в такому стані стартує більшість — і саме цей стан туторіали делікатно пропускають.

Сімнадцять способів помилитися

Падіння були на будь-який смак. Не одна причина, повторена сімнадцять разів, — сімнадцять по-справжньому різних помилок, одна за одною:

  • Не той Docker-образ. Потрібних build-інструментів у ньому просто не було. У голові зелено, на екрані червоно.
  • Змінна оточення, що так і не доїхала до контейнера. Застосунок не впав із гучною помилкою — він тихо помер, а це гірше.
  • Permission denied на build agent. Класика. З кодом усе гаразд, проблема в тому, кому дозволено його запускати.
  • Занадто великий build context, бо я забув .dockerignore і відправив у збірку пів своєї машини.
  • Синтаксис Jenkinsfile, що виглядав абсолютно правильним — рівно до моменту, поки Jenkins у своїй прямолінійній манері не пояснив, що ні.

Усі помилки, які може зробити новачок, я зробив за одну сесію. Поспіль.

Перелом стався на 12-му падінні

Десь на дванадцятому червоному кружечку щось змінилося. Я перестав просто вставляти текст помилки в гугл і сподіватися. Відкрив блокнот і почав записувати кожне падіння: помилку, робоче рішення і те, що перевірю першим наступного разу.

Ця маленька звичка змінила все. До п'ятнадцятого падіння я вже не реагував — я передбачав. Я читав Jenkinsfile і бачив проблему ще до того, як натиснути build. Помилки перестали бути випадковим шумом і стали мовою, яку я навчився читати.

Build 18 став зеленим

І ось воно. Пуш коду, pipeline відпрацьовує, артефакт збирається сам — зелений кружечок. Я дивився на нього цілу хвилину, майже чекаючи, що він ось-ось знову почервоніє.

Не почервонів. І за цю хвилину в мене в голові щось перепаялося в розумінні того, як узагалі доставляється софт. Більше жодних «у мене на машині працює». Тепер вирішує машина. Ти пушиш, pipeline судить, і суд для всіх однаковий. Це не бюрократія — це свобода від цілого класу суперечок.

Річ була взагалі не в інструменті

Через десять років я будував pipeline у GitLab, GitHub Actions і в купі штук, що до Jenkins не мали жодного стосунку. І чесна правда в тому, що інструмент майже не важливий. Важливий спосіб мислення, і він — суть усього:

  • Автоматизуй усе, що людина інакше зробить руками і обов'язково зіпсує о шостій вечора в п'ятницю.
  • Довіряй pipeline. Зелений — значить їде в прод. Червоний — не сперечаєшся з ним, а лагодиш причину.
  • Віддай машині нудну роботу, щоб голова лишилася вільною для задач, де реально потрібна людина.

Сімнадцять падінь навчили мене цього краще за будь-який курс, бо вони не давали кроків для повторення. Вони навчили думати. Курс видає готову робочу відповідь. Сімнадцять червоних кружечків видають інстинкт відлагодження — а цей інстинкт і є справжня робота.

Твій перший pipeline впаде. Хай падає.

Відстань між «я взагалі не розумію, що роблю» і «я це зібрав, і воно працює» виявилася рівною рівно сімнадцяти падінням і впертому небажанню закрити ноутбук.

У кожного сеньйора, на якого ти дивишся знизу вгору, за спиною кладовище впалих збірок. У кожного. Просто вони про це не говорять, і збоку здається, ніби вони завжди все знали. Не знали. Вони просто продовжували пушити крізь червоне.

Тож якщо ти сьогодні на третьому, десятому чи сімнадцятому червоному кружечку — добре. Ти не застряг. Ти вступив на курс. Хай падає — саме тут і живе навчання.

Скільки разів упав твій перший pipeline, перш ніж став зеленим?