<img src="https://habrastorage.org/getpro/habr/upload_files/fa2/df5/5b3/fa2df55b39ba129a4641d9d844658128.png" /><p>Статья получилась большой: практик много, и каждая из них важна по-своему. Я собрал материал как набор best practices: не все пункты нужны каждому проекту, но почти каждый пункт однажды всплывает на ревью, при оптимизации медленного пайплайна, при разборе утечки секрета или после тяжелого инцидента.</p><p>Я старался писать для разных грейдов: от базовой гигиены вроде <code>workflow:rules</code>, <code>cache</code>, <code>artifacts</code> и <code>needs</code> до более продакшеновых тем вроде OIDC, Vault, <code>CI_JOB_TOKEN</code>, защищённых окружений, ревью-окружений, очередей слияния, BuildKit без root-прав, CI/CD-компонентов и усиления защиты раннеров.</p><p>Поэтому язык подачи здесь намеренно сухой, прямой и инженерный: без долгих заходов, без воды и без пересказа документации ради пересказа. Я хотел сделать не обзорную статью, а рабочую памятку, к которой можно вернуться при написании нового пайплайна, ревью <code>.gitlab-ci.yml</code>, переносе проекта в GitLab или наведении порядка в уже существующей CI/CD-платформе.</p><p>Чтобы в статье было легче ориентироваться, я разбил её на смысловые блоки. Ниже оглавление: нажали на нужный пункт — сразу перешли к соответствующему разделу.</p><p>Оглавление:</p><p>1. <a href="https://%D0%BE%D0%B4%D0%B8%D0%BD" rel="noopener noreferrer nofollow">Зачем вообще думать о GitLab CI/CD</a></p><p>2. <a href="https://%D0%B4%D0%B2%D0%B0" rel="noopener noreferrer nofollow">Архитектура пайплайна и базовая YAML-гигиена</a></p><p>3. <a href="https://%D1%82%D1%80%D0%B8" rel="noopener noreferrer nofollow"><code>rules</code></a><a href="https://%D1%82%D1%80%D0%B8" rel="noopener noreferrer nofollow">, </a><a href="https://%D1%82%D1%80%D0%B8" rel="noopener noreferrer nofollow"><code>workflow:rules</code></a><a href="https://%D1%82%D1%80%D0%B8" rel="noopener noreferrer nofollow"> и управление созданием пайплайна</a></p><p>4. <a href="https://%D1%87%D0%B5%D1%82%D1%8B%D1%80%D0%B8" rel="noopener noreferrer nofollow">DAG, </a><a href="https://%D1%87%D0%B5%D1%82%D1%8B%D1%80%D0%B8" rel="noopener noreferrer nofollow"><code>needs</code></a><a href="https://%D1%87%D0%B5%D1%82%D1%8B%D1%80%D0%B8" rel="noopener noreferrer nofollow">, параллелизм, матрицы и быстрые пров</a>...</p> <a href="https://habr.com/ru/articles/1052024/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1052024#habracut">Читать далее</a>