Статьи

Автоматизация выпуска Java-артефактов с использованием Jenkins on Window

В этой статье будет показано, как автоматизировать процесс выпуска веб-приложения Java (приложение для регистрации учащихся, разработанное с использованием базы данных MYSQL с Hibernate ORM в среде Jersey2 Spring на основе REST) ​​с использованием непрерывной интеграции Jenkins — выгрузить артефакты выпуска в репозиторий выпуска. Задание, настроенное с помощью этой публикации, должно выполняться только после загрузки артефактов моментальных снимков в репозиторий моментальных снимков, как описано в предыдущем посте « Автоматизация развертывания и загрузки артефактов Java моментальных снимков с использованием Jenkins в Windows» . Детали реального приложения объясняются в предыдущем посте, приведенном по ссылке Создание веб-приложения Java с использованием Jersey REST With Spring .

1. Генерация ключей SSH для Github (без ключевой фразы)

Jenkins не поддерживает парольные фразы для ключей SSH и поэтому генерирует SSH-ключ для учетной записи Gihub без ключевой фразы. Следуйте инструкциям, приведенным в разделе « Создание ключей SSH» , создайте ключ SSH без ключевой фразы и загрузите его в учетную запись Github.

2. Заставить Jenkins работать как пользователь с ключом SSH

В Windows Jenkins использует SSH-ключ пользователя, от имени которого он работает, который находится в C: \ Users <username> .ssh. Следовательно, Jenkins должен запускаться как пользователь с именем пользователя.

Введите «services.msc» в командной строке, чтобы открыть Управление службами. Щелкните правой кнопкой мыши сервис Jenkins и выберите «Свойства».

Дженкинс-услуги-недвижимость

В окнах свойств Jenkins перейдите на вкладку Вход в систему. Выберите Войти как «Эта учетная запись», введите данные учетной записи (используйте опцию «Обзор», чтобы выбрать / проверить имя учетной записи) и нажмите «ОК». Учетные данные учетной записи обычно совпадают с учетной записью входа в Windows, как показано на снимке ниже

Дженкинс-вход

После сохранения изменений перезапустите службу Jenkins из управления службами, щелкнув правой кнопкой мыши службу Jenkins и выберите «Перезапустить», как показано ниже.

Дженкинс-услуга перезапуск

3. Установите плагины

На панели управления Jenkins перейдите к разделу «Управление Jenkins -> Управление плагинами», как показано на снимке ниже.

Дженкинс-manageplugins

Установите следующие плагины и перезапустите Jenkins, чтобы изменения вступили в силу.

  • Плагин выпуска Jenkins (для выпуска Maven)

4. Настройте систему

На панели управления Jenkins перейдите к разделу «Управление Jenkins -> Настройка системы», как показано на снимке ниже.

Дженкинс-configuresystem

Перейдите к разделу плагинов Maven Release. Включите поддержку Nexus-Pro, введите URL-адрес Nexus, учетные данные пользователя Nexus и сохраните изменения.

Дженкинс-нексус-про

5. Создать новую работу Дженкинс

На панели инструментов Jenkins нажмите «Новая работа», чтобы создать новую работу. Введите имя для работы и выберите «Построить проект maven2 / 3» в качестве опции и нажмите OK, как показано ниже.

Дженкинс-newjob

На экране «Конфигурация нового задания» перейдите в раздел «Управление исходным кодом» и укажите URL-адрес хранилища Git для проекта, как показано ниже. В разделе дополнительных вариантов поведения нажмите «Добавить» и выберите «Оформить заказ в определенную локальную ветвь». Введите название ветви как master и сохраните изменения.

Дженкинс-sourcecodemgmt-релиз

Перейдите к разделу «Среда сборки», включите опцию Maven Release Build и введите цели выпуска.

Дженкинс-Maven-releasebuild

Перейдите в раздел «Построение», введите maven цели для создания снимка, как показано ниже, и сохраните изменения.

Дженкинс-сборки

Перейдите в раздел «Настройки сборки». Выберите опцию для уведомления по электронной почте и введите значения для получателей электронной почты, как показано ниже. Сохраните изменения.

Дженкинс-emailnotifications

6. Настройте settings.xml

Чтобы загрузить встроенные артефакты Maven на сервер артефактов, настройте файл Jenkins settings.xml, находящийся в папке C: \ Program Files (x86) \ Jenkins \ tools \ hudson.tasks.Maven_MavenInstallation \ Maven_3.1 \ conf с теми же параметрами. как указано в файле settings.xml по умолчанию (обычно находится в C: \ Program Files \ Apache Software Foundation \ apache-maven-3.1.0 \ conf для компьютера с Windows) установки Maven в системе.

Как правило, раздел сервера для промежуточного хранилища необходимо настроить с помощью httpHeaders в файле settings.xml для выпуска Maven.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<servers>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>username</username>
      <password>password</password>
    <configuration>
      <httpHeaders>
        <property>
          <name>User-Agent</name>
          <value>Maven m2Release (java:${java.vm.version} ${env.BUILD_TAG }</value>
        </property>
      </httpHeaders>
      </configuration>
    </server>
</servers>

Кроме того, раздел профиля должен быть настроен для подписи PGP, подробности о том, как генерировать подписи PGP с Maven, можно найти в разделе «Создание пары ключей» в разделе Как генерировать подписи PGP с Maven.

01
02
03
04
05
06
07
08
09
10
11
12
13
<profiles>
    <profile>
      <id>gpg-release</id>
      <properties>
          <gpg.passphrase>passphrase</gpg.passphrase>
          <gpg.useagent>true</gpg.useagent>
          <gpg.defaultKeyring>false</gpg.defaultKeyring>
          <gpg.homedir>C:/Users/Sara/AppData/Roaming/gnupg</gpg.homedir>
          <gpg.publicKeyring>C:/Users/Sara/AppData/Roaming/gnupg/pubring.gpg</gpg.publicKeyring>
          <gpg.secretKeyring>C:/Users/Sara/AppData/Roaming/gnupg/secring.gpg</gpg.secretKeyring>
      </properties>
    </profile>
</profiles>

6. Обновите pom.xml

Файл pom.xml для проекта необходимо настроить с помощью следующих плагинов в разделе сборки.

  • Maven-силовик-плагин
  • Maven-релиз-плагин
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<build>
    <plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.2</version>
          <executions>
              <execution>
                  <id>enforce-maven</id>
                  <goals>
                      <goal>enforce</goal>
                  </goals>
                  <configuration>
                      <rules>
                          <requireMavenVersion>
                              <version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>
                              <message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures
                                  and checksums respectively.</message>
                          </requireMavenVersion>
                      </rules>
                  </configuration>
              </execution>
          </executions>
      </plugin>
  </plugins>
 
  <pluginManagement>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-release-plugin</artifactId>
              <version>2.4.2</version>
              <configuration>
                  <tagBase>https://github.com/elizabetht/StudentEnrollmentWithREST/tags</tagBase>
                  <mavenExecutorId>forked-path</mavenExecutorId>
                  <useReleaseProfile>false</useReleaseProfile>
                  <arguments>-Psonatype-oss-release</arguments>
              </configuration>
          </plugin>
      </plugins>
  </pluginManagement>
</build>

Обновите pom.xml разделом профиля для maven-gpg-plugin.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
<profiles>
  <profile>
      <id>sign</id>
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-gpg-plugin</artifactId>
                  <executions>
                      <execution>
                          <id>sign-artifacts</id>
                          <phase>verify</phase>
                          <goals>
                              <goal>sign</goal>
                          </goals>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>
  </profile>
</profiles>

Добавьте раздел управления распространением в pom.xml, чтобы указать URL-адрес снимка и промежуточного хранилища.

01
02
03
04
05
06
07
08
09
10
<distributionManagement>
  <repository>
      <id>sonatype-nexus-staging</id>
  </repository>
  <snapshotRepository>
      <id>sonatype-nexus-snapshots</id>
  </snapshotRepository>
</distributionManagement>

8. Построить сейчас

После завершения вышеуказанных шагов настройки нажмите «Build Now» в Jenkins -> Upload REST Release Artifacts (или соответствующее имя задания), чтобы построить проект на основе конфигурации.

Вывод на консоль содержит подробные журналы того, какие шаги были инициированы конфигурацией и результатом всей сборки. Убедитесь, что сборка прошла успешно.

9. Выполните Maven Release

Как только сборка завершится успешно и снимки будут загружены в репозиторий снимков, нажмите «Perform Maven Release» в Jenkins -> Upload REST Release Artifacts (или соответствующее имя задания), чтобы запустить процесс Maven Release.

Убедитесь, что версия выпуска и следующая версия разработки верны. Включите «Задать префикс комментариев SCM», чтобы ввести пользовательский комментарий SCM. Включите «Указать пользовательский тег SCM», чтобы ввести пользовательский тег SCM. Нажмите на Расписание Maven Release Build.

Jenkins-выполнить-Maven-релиз

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

Таким образом, весь процесс выполнения отправления артефактов maven в промежуточное хранилище и запуска электронной почты для получателей может быть автоматизирован одним нажатием кнопки через Jenkins. Промежуточное хранилище может быть затем выполнено с помощью шагов Закрыть (если оно все еще открыто) и Выпуск, чтобы завершить продвижение артефактов.