Рубрики
Uncategorized

Полная автоматизация, интегрирующая докер, Github с Дженкинсом Многоibranch CI / CD-трубопровод на AWS EC2

Что такое Ci / Cd? CI обозначает постоянную интеграцию CD подставки для непрерывной доставки или … с меченым с Дженкинсом, Докером, DevOps, Multibranch.

Что такое Ci/Cd?

  • Ci обозначает постоянную интеграцию
  • CD подставки для непрерывной доставки или непрерывного развертывания

Позвольте мне объяснить через пример:

Когда вы делаете коммит и толкающие источники в Git SCM (управление исходным кодом, как GitHub, GitLab и т. Д.), Тогда автоматические сборки и тесты работают с последними изменениями, это знает как непрерывная интеграция

При непрерывной доставке изменения кода автоматически создаются, тестируются и подготовлены для выпуска до производства. Непрерывная доставка расширяется при непрерывной интеграции путем развертывания всех изменений кода в среду тестирования и поставить вручную одобрение для добавления их в постановку добычи.

Непрерывное развертывание расширяется при непрерывной доставке и автоматически подталкивается к производственной среде без какого-либо одобрения.

Что такое трубопровод и мультибланчанский трубопровод?

Трубопровод DEVOPS — это набор автоматизированных процессов и инструментов, которые позволяют как разработчикам, так и профессионалам операций работать сплоченно для создания и развертывания кода к производственной среде Дженкинс мультибрианч-трубопровод позволяет автоматически создавать конвейер для каждой ветви в вашем хранителе исходного управления. Multibranch трубопровод работает, используя вместе с jenkinsfile, который обычно хранится вместе с нашим исходным кодом внутри репозитория управления версией.

Jenkins.

Jenkins — это сервер автоматизации открытых источников. Дженкинс Проект был начат в 2004 году (первоначально называемый Гудзон) Kohsuke Kawaguchi, пока он работал на Microsystems Sun. Он был в основном разработан для непрерывной интеграции, но в последние дни Дженкинс организовал весь трубопровод по доставке программного обеспечения — под названием непрерывное доставку и непрерывное развертывание (CD). В настоящее время он является одним из самых популярных инструментов DevOps.

Докер

Докер Является ли инструмент, предназначенный для облегчения создания, развертывания и запуска приложений с помощью контейнеров. Контейнеры позволяют разработчику упаковать приложение со всеми нужными частями, такими как библиотеки и другие зависимости, и разверните его как один пакет. При этом благодаря контейнеру разработчик может быть уверен, что приложение будет работать на любой другой машине Linux независимо от любых настроенных настроек, которые могут иметь машину, которые могут иметь отличаться от машины, используемой для записи и тестирования кода.

Это инструмент, который предназначен для привлечения пользы как разработчиков, так и системных администраторов, что делает его частью многих DEVOPS (операций разработчиков + операций). Для разработчиков это означает, что они могут сосредоточиться на написании кода, не беспокоясь о системе, на которой она в конечном итоге будет работать. Это также позволяет им получить начало главы с использованием одной из тысяч программ, уже предназначенных для запуска в контейнере докера как часть их применения. Для операционного персонала Docker дает гибкость и потенциально снижает количество систем, необходимых из-за его небольшого следа и нижнего накладных расходов. Здесь мы будем интегрировать Докер с Дженкинсом.

Предварительные условия

  • RHEL8 (вы можете установить любую другую ОС, но шаги будут отличаться)
  • Докер
  • Jenkins.
  • Mobaxterm SSH клиент (или любой другой, который вы предпочитаете)

Шаги:

  • Разверните экземпляр AWS EC2 RHEL8-OS из консоли AWS. Обязательно добавьте входящие правила для порта 8080 для источника 0.0.0.0/0

  • Выполните эти команды для установки Docker: sudo dnf. Config-Manager://download.docker.com/linux/centos/docker-ce.repo sudo dnf установить docker-ce

  • Выполните эти команды для установки WGET, OpenJDK, Jenkins:

sudo dnf update -y
sudo dnf install wget -y
sudo wget http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo -O /etc/yum.repos.d/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo  dnf install -y java-11-openjdk-devel
sudo dnf install http://repo.okay.com.mx/centos/8/x86_64/release/daemonize-1.7.8-1.el8.x86_64.rpm
sudo dnf install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
  • Дайте Jenkins User Sudo Privileges:
vi -f /etc/sudoers

и добавьте следующую строку в нижней части файла:

jenkins ALL= NOPASSWD: ALL
  • Давайте настроим jenkins сейчас: Открывайте Jenkins на веб-браузере с помощью URL:
http://aws_ip_address:8080

* Вам нужно будет получить токен от

/var/lib/jenkins/secrets/initialadminpassword

Делать

sudo cat /var/lib/jenkins/secrets/initialadminpassword

И скопируйте текст и вставьте, что на веб-странице Дженкинса. * Выберите Установить Предлагаемые плагины * Создайте первый пользователь администратора * Сохранить и закончить

  • Создайте личный токен доступа, посетив здесь Отказ Установите все разрешения и срок действия срока действия без действия. И затем перейдите к управлению Jenkins-> Configure System в Add GitHub Server: введите имя:
Personal_Access_Token_USER

API URL:

https://api.github.com

Add-> Jenkins, выберите «Вид»> «Секретный текст» введите секрет как ваш личный токен доступа, который вы создали ранее. ID (необязательно):

b91c96c3-7a3f-4e08-b22d-c1100dd49eb9

Введите тот же идентификатор, если вы собираетесь использовать мою jenkinsfile из этого проекта или отредактируйте идентификатор в jenkinsfile Acccccord. Перейти к управлению Jenkins-> Управление учетными данными-> jenkins-> Global Complies (неограниченные) -> Добавить учетное значение учетных данных: Ваше имя пользователя GitHub Пароль: введите токен личного доступа, который был сгенерирован ранее ID (необязательно):

434b0b23-9deb-4ee6-85d4-43c4c23513bb

Введите тот же идентификатор, если вы собираетесь использовать мою jenkinsfile из этого проекта или отредактируйте идентификатор в jenkinsfile Acccccord.

  • Скачать и изменить jenkinsfile

Что оно делает? Ну, jenkinsfile — это окончательный файл трубопровода, через который Jenkins автоматически определяет весь процесс автоматизации и выполняет в нее, упомянутые шаги. Скачать мой Jenkinsfile.

Замените URL My Git Reppo в течение всего файла. Также измените блок UsiliDeTility с вашими деталями GitHub в классе GITSCM Code Checkout Нажмите эту модифицированную JenkinsFile в обе оба ветвянки в вашем репо. Было бы лучше, если вы добавите его в ветку Master и создадите ветвь DEV, используя это Но вы можете сделать это только на новом репо. Для более старого репо, вам может потребоваться использовать комбинации нескольких команд GIT, включая сброс GIT, GIT REBASE, GIT Checkout и Git Flation. Напишите мне, если вы сталкиваетесь с любыми дифситами, также помните, я использую ветку Master и Dev. Если вы используете любой другой филиал вместо «dev», внесите изменения соответственно в Jenkinsfile. Также открытые входящие порты 82 и 83 в консоли AWS EC2, как вы сделали для порта 8080 на шаге 1

  • Выберите новый элемент: введите имя элемента:
git_job_pipeline

Выберите Multibranch Coveline и нажмите OK

Выберите Добавить источники-> GitHub Выберите и устанавливайте учетные данные и установите имя REPO. В моем случае: https://github.com/amsal1/devops_ci_cd/

Нажмите Сохранить, и это сделает отдых

Оригинал: «https://dev.to/amsal/complete-automation-integrating-docker-github-with-jenkins-multibranch-ci-cd-pipeline-on-aws-ec2-3l0o»