Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
service:gitlab [31.05.2024 07:15] – [Реестры] viacheslav | service:gitlab [15.01.2025 13:46] (текущий) – [Deploy] viacheslav |
---|
Когда релиз создаётся, то | Когда релиз создаётся, то |
* Гитлаб автоматически архивирует исходный код и ассоциирует его с релизом. | * Гитлаб автоматически архивирует исходный код и ассоциирует его с релизом. |
* Гитлаб автоматически создаёт json-файл ([[https://docs.gitlab.com/ee/user/project/releases/release_evidence.html|release evidence]]), где перечислено всё, что входит в релиз, что нужно для сравнения релизов и их аудита. | * Гитлаб автоматически создаёт json-файл ([[https://docs.gitlab.com/ee/user/project/releases/release_evidence.html|release evidence]]), где перечислено всё, что входит в релиз, что нужно для сравнения релизов и их аудита. Можно использовать API для генерации release evidence, их может быть несколько. |
| |
После релиза можно | После релиза можно |
* [[https://docs.gitlab.com/ee/user/project/releases/#associate-milestones-with-a-release|Ассоциировать вехи]] (milestones) с релизом. | * [[https://docs.gitlab.com/ee/user/project/releases/#associate-milestones-with-a-release|Ассоциировать вехи]] (milestones) с релизом. |
* [[https://docs.gitlab.com/ee/user/project/releases/release_fields.html#release-assets|Добавить прочие ресурсы (assets)]] типа инструкций по запуску и пакетов. | * [[https://docs.gitlab.com/ee/user/project/releases/release_fields.html#release-assets|Добавить прочие ресурсы (assets)]] типа инструкций по запуску и пакетов. |
| |
| [[https://docs.gitlab.com/ee/user/project/releases/#create-a-release|Creating a release]]\\ |
| [[https://docs.gitlab.com/ee/user/project/releases/release_cicd_examples.html|Release CI/CD examples]]\\ |
| [[https://docs.gitlab.com/ee/user/project/releases/release_cli.html|Release CLI tool]] |
| |
| В Гитлабе есть несколько функций для удобства развертывания и теста релизов. |
| |
| * [[https://docs.gitlab.com/ee/ci/review_apps/|Review apps]] - предпросмотр изменений, сделанных в ветке, с помощью развёртывания динамического окружения для мердж-реквеста. [[https://www.youtube.com/watch?v=HblSiPFamDI|Youtube]] |
| * [[https://docs.gitlab.com/ee/operations/feature_flags.html|Feature flags]] - переключатели, позволяющие включить и выключать функции для тех или иных групп пользователей. |
| * [[https://docs.gitlab.com/ee/user/project/pages/index.html|Gitlab Pages]] - встроенный хостинг статических веб-страниц прямо из репозитория. Таким образом можно хостить портфолио, документацию, презентации и т. п. [[https://www.youtube.com/watch?v=TWqh9MtT4Bg|Youtube]] |
===== Pipeline ===== | ===== Pipeline ===== |
Пайплайн - это файл ''.gitlab-ci.yml'' в корне git-репозитория. Состоит из последовательных этапов (stages), в каждом этапе есть задачи (jobs). По умолчанию, если не заданы условия, задачи выполняются параллельно. Если какая-то задача выполнилась с ошибкой, то весь пайплайн будет провален. | Пайплайн - это файл ''.gitlab-ci.yml'' в корне git-репозитория. Состоит из последовательных этапов (stages), в каждом этапе есть задачи (jobs). По умолчанию, если не заданы условия, задачи выполняются параллельно. Если какая-то задача выполнилась с ошибкой, то весь пайплайн будет провален. |
- ./scriptfile.sh | - ./scriptfile.sh |
</code> | </code> |
Если скрипт что-то создал в каталоге, то можно это не удалять, т. к. пайплайн запускается каждый раз по новой и не использует старого окружения. | Если скрипт что-то создал в каталоге на раннере, то можно это не удалять, т. к. пайплайн запускается каждый раз по новой и не использует старого окружения. |
| |
==== only/except ==== | ==== only/except ==== |
| |
==== Использование в Dockerfile образов из локального реестра образов ==== | ==== Использование в Dockerfile образов из локального реестра образов ==== |
В пайплайне нужно добавить ''--build-arg CI_REGISTRY_IMAGE=${CI_REGISTRY_IMAGE}'' в команду сборки. | В пайплайне нужно добавить ''%%--build-arg CI_REGISTRY_IMAGE=${CI_REGISTRY_IMAGE}%%'' в команду сборки. |
| |
<code yaml> | <code yaml> |
{{:service:pasted:20230530-081539.png}} | {{:service:pasted:20230530-081539.png}} |
| |
Почистить кэш можно кнопкой "Clear runner caches" в CI/CD -> Pipelines. "Почистить" в этом случае значит просто не использовать кэшв следующих запусках пайплайна, физически кэш не удаляется. [[https://docs.gitlab.com/ee/ci/caching/#where-the-caches-are-stored|Где хранится кэш]]? | Почистить кэш можно кнопкой "Clear runner caches" в CI/CD -> Pipelines. "Почистить" в этом случае значит просто не использовать кэш в следующих запусках пайплайна, физически кэш не удаляется. [[https://docs.gitlab.com/ee/ci/caching/#where-the-caches-are-stored|Где хранится кэш]]? |
| |
[[https://docs.gitlab.com/ee/ci/caching/|Справка по кэшу]] | [[https://docs.gitlab.com/ee/ci/caching/|Справка по кэшу]] |
</code> | </code> |
| |
Вышеприведённый вариант с Докером неудобен, т. к. контейнер не заменяется, и при повторном запуске пайпдайна будет ошибка, т. к. порт занят. Эту проблему решает docker-compose. | Вышеприведённый вариант с Докером неудобен, т. к. контейнер не заменяется, и при повторном запуске пайплайна будет ошибка, т. к. порт занят. Эту проблему решает docker-compose. |
<code yaml> | <code yaml> |
deploy_to_dev: | deploy_to_dev: |
</code> | </code> |
Решение: не раннере удалить всё в каталоге ''/home/gitlab-runner''. | Решение: не раннере удалить всё в каталоге ''/home/gitlab-runner''. |
| ===== Безопасность ===== |
| Shifting Security Left - GitLab DevSecOps Overview: https://www.youtube.com/watch?v=XnYstHObqlA\\ |
| |
| Гитлаб предлагает сканеры безопасности: |
| * [[https://docs.gitlab.com/ee/user/application_security/sast/|Static Application Security Testing]] (SAST) - обнаружение проблем в самом исходном коде, например, пользовательский ввод позволяет выполнить инъекцию команды. [[https://www.youtube.com/watch?v=8sOjvlkl8QY|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/secret_detection/|Secret Detection]] - обнаружение вбитых паролей в исходном коде. [[https://www.youtube.com/watch?v=W2tjcQreDwQ|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/dast/|Dynamic Application Security Testing]] (DAST) - сканирование на уязвимости через вызов приложения или API. [[https://www.youtube.com/watch?v=ywme200L7LU|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/iac_scanning/|Infrastructure-as-Code (IaC) Scanning]] - сканирование IaC-файлов (Ansible, Terraform) на уязвимости. |
| * [[https://docs.gitlab.com/ee/user/application_security/dependency_scanning/|Dependency Scanning]] - отчёт по уязвимостям зависимостей проекта по их версиям. [[https://www.youtube.com/watch?v=39RvTMLDszc|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/container_scanning/|Container Scanning]] - сканирование докер-образов на уязвимости. [[https://www.youtube.com/watch?v=C0jn2eN5MAs|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/api_fuzzing/|Fuzz Testing]] - шлёт на вход функций всякую ерунду на предмет неожиданных глюков. [[https://www.youtube.com/watch?v=oUHsfvLGhDk|Демо]] |
| |
| Отчёты / управление: |
| * [[https://docs.gitlab.com/ee/user/application_security/security_dashboard/|Security Reports]] - сводный отчёт по уязвимостям. [[https://www.youtube.com/watch?v=QHQHN4luNpc|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/vulnerability_report/|Vulnerability Management]] [[https://www.youtube.com/watch?v=8SJHz6BCgXM|Демо]] |
| * [[https://docs.gitlab.com/ee/user/application_security/policies/|Policies]] [[https://www.youtube.com/watch?v=IZbCIKXz-wM|Демо]] |
| |
| |
===== Прочее ===== | ===== Прочее ===== |
| |
| |
==== Тестовый проект Gitlab from zero to hero ==== | ==== Тестовый проект Gitlab from zero to hero ==== |
https://gitlab.com/nanuchi/mynodeapp-cicd-project | https://gitlab.com/nanuchi/mynodeapp-cicd-project |