2 месяца назад
DevOps and GitLab CI/CD
GitLab CI/CD — это встроенная в GitLab система для автоматизации процессов сборки, тестирования и развертывания приложений. Она позволяет создавать pipeline (пайплайны), которые автоматически выполняются при определенных событиях, таких как push в репозиторий или создание merge request. GitLab CI/CD работает на основе событий (events). Когда происходит определенное событие в репозитории (например, push кода или создание merge request), GitLab автоматически запускает соответствующий pipeline...
1 год назад
🤓 Установка Gitlab CE + Gitlab Runner + Gitlab Registry 🖼️ #devsecops #devops #разработка GitLab — инструмент для совместной работы над проектами разработки программного обеспечения. Он обеспечивает хранение и управление репозиториями Git, а также контроль версий программного кода. GitLab автоматизирует процессы CI/CD: сборку, тестирование и развертывание ПО. Для запуска и автоматического выполнения задач CI/CD в GitLab используется приложение GitLab Runner. ⚖️ Подготовка: 1. Вам нужен сервер на 🖥 Ubuntu 22.04 с минимальными характеристиками 4 Гб ОЗУ и 4 ядра. Я же рекомендую 8 Гб ОЗУ и 8 Ядер. 2. Вам нужен домен. 3. В доменном регистраторе сделайте 2 поддомена: gitlab. и registry.gitlab. и создайте A записи с IP своего сервера 4. Выполнить минимальную настройку по этому гайду и выполнить ssh-keygen -t ed25519 📌 ed25519 более новый стандарт, чем RSA и сейчас best practice использовать этот алгоритм ⚖️ После настройки сервера: 5. Создаете нового пользователя, выдаёте права и добавляете свой ssh ключ в ~/.ssh/authorized_keys 6. Установим zsh как оболочку по умолчанию: chsh -s /bin/zsh 7. Замените в /etc/ssh/sshd_config с # Port 22 на Port 4422. Чтобы наш ssh сервер не мешал гитлабовскому 9. Отключим IPv6 для ufw sed -i 's+IPV6=yes+IPV6=no+g' /etc/default/ufw 8. Добавьте необходимые порты в ufw: ufw allow 80; ufw allow 443; ufw allow 22; ufw allow 4422; ufw enable и тыкаете y 9. Далее создаете docker-compose.yml version: '3.8' services: gitlab: container_name: gitlab-ce image: 'gitlab/gitlab-ce:latest' restart: always hostname: 'gitlab-ce' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.redacted.com' registry_external_url 'https://registry.gitlab.redacted.com' gitlab_rails['registry_enabled'] = true letsencrypt['enable'] = true letsencrypt['contact_emails'] = ['ВАША_ПОЧТА'] letsencrypt['auto_renew'] = true ports: - '80:80' - '443:443' - '22:22' volumes: - '/opt/gitlab/config:/etc/gitlab' - '/opt/gitlab/logs:/var/log/gitlab' - '/opt/gitlab/data:/var/opt/gitlab' networks: - gitlab gitlab-runner: container_name: gitlab-runner image: gitlab/gitlab-runner:latest restart: always hostname: 'gitlab-runner' depends_on: - gitlab volumes: - '/opt/gitlab-runner/data:/home/gitlab_ci_multi_runner/data' - '/opt/gitlab-runner/config:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock:rw' environment: - CI_SERVER_URL=https://gitlab.redacted.com/ci networks: - gitlab networks: gitlab: name: gitlab-network 10. Запускаете конфигурацию docker compose up -d . И ждём... Если скучно, то можно следить за ходом установки docker logs --follow gitlab-ce 12. Посмотрим пасс от аккаунта админа: grep 'Password: ' /opt/gitlab/config/initial_root_password 13. Переходим на gitlab.redacted.com и авторизуемся root:пасс_из_файла Если всё получилось поднимаю за вас бокал гранатового вина 🍷 Если не получилось, то несу вам тонометр ⚖️ Настройка Gitlab: 0. Проверяем, что все нужные сервисы запустились в разделе Features и потом проверяем health_check 1. Сразу отключаем регистрацию других пользователей (хоть им и потребуется подтверждение от админа, но кто знает какая CVE будет в будущем). Для этого идём сюда и в разделе Sign-up restrictions убираем галочку у Sign-up enabled 2. Далее создадим своего пользователя. Обязательно ставим, что пользователь Administrator 2.1. Возвращаемся на шаг назад и нажимаем Edit по пользователю и задаем ему пароль 3. Логинимся под новым аккаунтом, нас попросит изменить пароль, но мы можем указать во все 3 поля одинаковый пароль 4. Удаляем пользователя root 5. Настроим рейт лимиты. Я поставил 10 запросов на IP и бан на 24 часа + поставил веселый текст для тех, кто будет фаззить мой сервер :)) 6. Отключил рекламу и по фану поставил себе первый рабочий день Monday ⚖️ Далее можете поставить себе темную тему, добавить свои ssh ключи и радоваться жизни с полноценным Gitlab CE 🌚 @poxek