Jenkins

Contents
Введение
Статьи про 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 как лучший проект с открытым исходным кодом

Banner Image

Установка через 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-24 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-24 00:01:07.888+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2024-04-24 00:01:11.243+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2024-04-24 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-24 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-24 00:01:12.611+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0 2024-04-24 00:01:12.614+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults 2024-04-24 00:01:12.618+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms 2024-04-24 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-24 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-24 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-24 00:01:14.929+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started @9305ms 2024-04-24 00:01:14.957+0000 [id=23] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2024-04-24 00:01:15.694+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2024-04-24 00:01:15.780+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2024-04-24 00:01:18.789+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2024-04-24 00:01:18.799+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2024-04-24 00:01:18.855+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2024-04-24 00:01:20.773+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2024-04-24 00:01:20.776+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2024-04-24 00:01:20.779+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2024-04-24 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-24 00:01:21.988+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata 2024-04-24 00:01:22.051+0000 [id=42] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server 2024-04-24 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-24 00:02:13.751+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2024-04-24 00:02:13.836+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running 2024-04-24 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-24 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-24 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.aredel.com
Разблокировать Jenkins
www.aredel.com

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

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

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

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

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

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

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

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

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

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

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

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
Jenkins
Install Jenkins
Jenkins Basics
Jenkins Pipeline
Schedule
Errors
DevOps
Docker
Make

Search on this site

Subscribe to @aofeed channel for updates

Visit Channel

@aofeed

Feedbak and Questions in Telegram

@aofeedchat