Jenkins

Содержание
Введение
Статьи про Jenkins

Введение

Jenkins — программная система с открытым исходным кодом на Java , предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения.

Ответвлена в 2008 году от проекта Hudson, принадлежащего компании Oracle, основным его автором — Косукэ Кавагути.

Распространяется под лицензией MIT.

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

Работает в сервлет-контейнере, например, Apache Tomcat.

Поддерживает инструменты системы управления версиями, включая AccuRev, CVS, Subversion , Git , Mercurial, Perforce, Clearcase и RTC.

Может собирать проекты с использованием Apache Ant и Apache Maven , а также выполнять произвольные сценарии оболочки и пакетные файлы Windows .

Сборка может быть запущена разными способами, например, по событию фиксации изменений в системе управления версиями, по расписанию, по запросу на определённый URL, после завершения другой сборки в очереди.

Возможности Jenkins можно расширять с помощью плагинов.

Контроль доступа реализуется двумя способами: проверкой подлинности пользователя и авторизацией.

Поддерживается защита от внешних угроз, в том числе от CSRF-атак и вредоносных сборок.

В 2011 году Jenkins получил награду InfoWorld как лучший проект с открытым исходным кодом

Установка через Docker в Ubuntu

Предварительно нужно установить Docker

sudo apt -y update
docker pull jenkins/jenkins:lts

lts: Pulling from jenkins/jenkins 67e8aa6c8bbc: Pull complete d4b310eb3fdf: Pull complete 79f2f383117e: Pull complete 8b0534c7187a: Pull complete e4ebc026722c: Pull complete b8b2b1a015c7: Pull complete 1308663db51f: Pull complete a9980750ebb2: Pull complete 771a2a8f3665: Pull complete 8767b747a3d4: Pull complete 68fbb5fc468d: Pull complete 76dd80acf4f6: Pull complete bb3b9e0921fc: Pull complete f469501b9a46: Pull complete c35c92bf7d6e: Pull complete e4260d58d0c6: Pull complete 62d1b6acbca2: Pull complete Digest: sha256:9893bfe43a850a0c80a4dc6e40d212e345ce8ad5537a4cf1d3f2033787a43695 Status: Downloaded newer image for jenkins/jenkins:lts docker.io/jenkins/jenkins:lts

Проверить скачался ли образ можно выполнив

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE jenkins/jenkins lts cb535f2a7054 17 hours ago 464MB

https://github.com/jenkinsci/docker

docker run -p 8080:8080 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") 2024-04-25 00:01:07.521+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @1893ms to org.eclipse.jetty.util.log.JavaUtilLog 2024-04-25 00:01:07.888+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2024-04-25 00:01:11.243+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2024-04-25 00:01:11.483+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.15+10 2024-04-25 00:01:12.436+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2024-04-25 00:01:12.611+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0 2024-04-25 00:01:12.614+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults 2024-04-25 00:01:12.618+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms 2024-04-25 00:01:14.142+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 2024-04-25 00:01:14.837+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@3efedc6f{Jenkins v2.332.3,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war} 2024-04-25 00:01:14.926+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@3e7634b9{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} 2024-04-25 00:01:14.929+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started @9305ms 2024-04-25 00:01:14.957+0000 [id=23] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2024-04-25 00:01:15.694+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2024-04-25 00:01:15.780+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2024-04-25 00:01:18.789+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2024-04-25 00:01:18.799+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2024-04-25 00:01:18.855+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2024-04-25 00:01:20.773+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2024-04-25 00:01:20.776+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2024-04-25 00:01:20.779+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2024-04-25 00:01:20.783+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2024-04-25 00:01:21.988+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata 2024-04-25 00:01:22.051+0000 [id=42] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server 2024-04-25 00:01:22.630+0000 [id=28] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 321f104e70794cf4b718144333217a3a This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2024-04-25 00:02:13.751+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2024-04-25 00:02:13.836+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running 2024-04-25 00:02:15.552+0000 [id=42] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller 2024-04-25 00:02:15.554+0000 [id=42] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1 2024-04-25 00:02:15.569+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 53,575 ms

Примерно в этот момент нужно открыть в браузере url вида ip_jenkins:8080 и скопировать туда пароль

localhost:8080

В данном примере установка идёт в VirtualBox на машине с ip 192.168.56.206, поэтому я ввёл

http://192.168.56.206:8080

Unlock Jenkins изображение с сайта www.eth1.ru
Разблокировать Jenkins
www.eth1.ru

В случае успеха Вам будет предложено настроить плагины

Customize Jenkins изображение с сайта www.eth1.ru
Кастомизировать Jenkins
www.eth1.ru

Выберем рекомендованные плагины

Getting Started Jenkins изображение с сайта www.eth1.ru
Установка плагинов Jenkins
www.eth1.ru

После установки плагинов нужно создать администратора

Create First Admin User Jenkins изображение с сайта www.eth1.ru
Создать админа Jenkins
www.eth1.ru
Create First Admin User Jenkins изображение с сайта www.eth1.ru
Создать админа Jenkins
www.eth1.ru

Далее будет предложено внести настройки. Меня пока устраивает то что по умолчанию

Instance Configuration Jenkins изображение с сайта www.eth1.ru
Instance Configuration Jenkins
www.eth1.ru

Теперь Jenkins готов к работе.

Jenkins is Ready изображение с сайта www.eth1.ru
Jenkins готов к работе
www.eth1.ru

Где-то в процессе настройки я получил следующее сообщение

client_loop: send disconnect: Broken pipe

И меня выкинуло и из запуска контейнера и из виртуалки. Поэтому я перезашёл туда и проверил обстановку

root@ubuntuserver:/home/andrei# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE jenkins/jenkins lts cb535f2a7054 18 hours ago 464MB

root@ubuntuserver:/home/andrei# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6f4521cd9a3 jenkins/jenkins:lts "/sbin/tini -- /usr/…" 53 minutes ago Up 53 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 50000/tcp tender_ardinghelli

Статьи про Jenkins
DevOps
Linux
Windows
make
Bash
Docker
Jenkins
Make
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......