Что такое Ci/Cd?
CI/CD подписывается для непрерывной интеграции и непрерывного развертывания. Непрерывная интеграция означает постоянно создание вашей приложения. Рассмотрим сценарий, где разработчик вносит некоторые изменения в исходном коде. Теперь непрерывная интеграция должна иметь возможность извлечь этот исходный код и подготовить сборку. Создание также включает в себя компиляцию и проверку вашего кода, анализ кода, тестирование и тестирование единиц и интеграции, также упаковывая ваше приложение.
После непрерывной интеграции у нас есть постоянная доставка. До сих пор ваш продукт готов, протестирован и готов к доставке. Рассмотрим, что постоянные инструменты интеграции, такие как Jenkins, которые развертывают в тестовых серверах, чтобы выполнить тестирование приема пользователя, и после этого это будет развернуто на сервере PROD для выпуска. Если этот шаг сделан вручную, он называется непрерывной доставкой Но да, если это сделано автоматически, то его постоянное развертывание.
Понимание рабочего процесса
Во-первых, давайте простым Hello World Project в нашей местной машине и инициализируйте Git. Однажды закончил наш код в удаленный репозиторий. Далее мы напишем простое задание Jenkins так, чтобы она запускала и развернула наш код на сервер Dev. Мы создадим два разных экземпляра AWS для Jenkins и Dev. Помните, что мы будем запускать приложение Jenkins внутри контейнера Docker, чтобы мы не должны были пройти через ручную установку.
Давайте принесем это к жизни
Внутри местной машины
Шаг 1: Давайте создадим простой Hello World Project, написанный в PHP.
Шаг 2: Инициализируйте GIT, Commun и нажмите изменения в удаленный репозиторий.
Внутри Github
Создайте WebHook, чтобы Jenkins Jobs вызвать или искать изменения, когда кода нажимается в указанную ветку.
Перейти к настройкам -> WebHooks -> Добавить окна.
URL полезной нагрузки : URL находится в виде $ jenkins_base_url/github-webhook/- например: https://ci.example.com/jenkins/github-webhook/ Отказ
Тип содержимого : Приложение/JSON
Секретный ключ : Секретный ключ, чтобы GitHub может получить доступ к Дженкинам.
Какие события вы хотели бы вызвать этот веб -ook? : Зависит от событий, которые вы предпочитаете. Я только что проверил для толкающего события I.e. Работа срабатывает всякий раз, когда что-то подтолкнуло к ветку GitHub. (Для конкретной имени филиала вы можете упомянуть его от Дженкинса).
Обновите веб-капоны. Вот это внутри Github.
Внутри экземпляра Дженкинса
Шаг 1: SSH до экземпляра AWS Jenkins
```
SSH -I.
Step 2: Run update your packages.
Sudo APT-Get Update
Step 3: Install docker
sudo apt-get install docker.io
Step 4: Add Docker to your user group and login again after exit
Sudo Usermod -Ag Docker Ubuntu
Step 5: Let's pull docker image for jenkins:
Докер тянуть Дженкинс/Дженкинс
Step 6: Type
Docker Images.
to see pulled image from jenkins/jenkins repository Step 7: Run Docker image:
Docker Run -D -P 8080: 8080 —Name
Step 8:Type
докер PS.
to see running container. Step 9: Once you setup jenkins inside docker. Try, accessing from browser ```:
ПРИМЕЧАНИЕ. Перед доступом открыть правила Add Inbound в AWS. Выберите группы безопасности (мастер запуска). Нажмите Редактировать-> Добавить правила, установите Пользовательские правила TCP и _External Port Range (мой случай 8080) _Ally HTTP правило тогда спасти
Вуаля! Затем вы можете запустить Jenkins, установить предложенный плагин (по умолчанию). Заполните необходимые учетные данные и установите набор первых заданий!
Шаг 1: Создать проект Freestyle.
Шаг 2: Добавьте некоторое описание и дайте URL репозитория GitHUB от того, где Дженкинс принесет ваш проект.
Помните, чтобы настроить веб -ook внутри Github. Перейти к Настройки-> WebHooks-> Добавить URL полезной нагрузки i.e/github-webhook/
Шаг 3: Напишите несколько скриптов Shell для развертывания вашего кода внутри Dev-Server.
Для установления соединение между женкинсом и экземпляром DEV нам нужно добавить открытый ключ Jenkins для авторизованного ключа DEV.
В jenkins экземпляра run SSH-Keygen Чтобы генерировать ключ .PUB и скопируйте открытый ключ от .ssh/dev ./ssh/authorized_keys.
instance = '13.232.89.159' ARCHIVE_FILENAME = cicd.zip zip --symlinks -x *.git* -r $ARCHIVE_FILENAME . #compress all the files and create zip file echo "--------Copying Files to remote dev server from jenkins ----------" scp -o StrictHostKeyChecking=no index.tar.gz ubuntu@$instance:/home/ubuntu/ echo "--------Finished Copying----------" echo "Entering to Dev Instance" ssh -o StrictHostKeyChecking=no ubuntu@$instance ' mv $ARCHIVE_FILENAME /var/www/html #move zip file from current directory to /var/www/html cd /var/www/html unzip $ARCHIVE_FILENAME rm -rf $ARCHIVE_FILENAME #remove the file once done '
После того, как часть сценариев выполняется, давайте сохраним и построить нашу работу. После успешной сборки работы мы можем получить доступ к нашему серверу развертывания из нашего браузера и увидеть внесенные изменения.
Это просто простой пример, который мы сделали, просто чтобы понять рабочий процесс CI/CD.
Ты обалденный!
Оригинал: «https://dev.to/samsha1/getting-started-in-cicd-for-begineers-1lp8»