CI/CD сборка Maven
В данном разделе рассмотрен пример CI/CD Maven сборки проекта java.
Для проверки данного примера примера подготовлена ветка maven-build репозитория CICD_building_projects.
Подготовительные действия
-
Создайте репозиторий, например, CICD_building_projects.
-
Обновите список доступных пакетов:
sudo apt update- Установите пакет по умолчанию JDK, который включает в себя компилятор Java:
sudo apt install default-jdkПроверьте, что компилятор установлен:
javac -version- Скачайте раннер и сделайте его исполняемым:
chmod +x act_runner-
Включите CI/CD в настройках вашего репозитория:

- Установите Maven.
Обновите список пакетов:
sudo apt updateУстановите Maven:
sudo apt install mavenПроверьте установку:
$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.23, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.15.153.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"HelloWorld.Java
Создайте в директории src/main/java/ru/gitverse/tutorials/helloworld файл HelloWorld.Java с кодом:
package ru.gitverse.tutorials.helloworld;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Проверьте, что файл исполняется:
$ java src/main/java/ru/gitverse/tutorials/helloworld/HelloWorld.java
Hello, World!pom.xml
pom.xml — это файл конфигурации Maven, где вы определяете информацию о вашем проекте, такую как groupId, artifactId, version, зависимости и т.д.
Пример pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ru.gitverse.tutorials</groupId>
<artifactId>hello-world-module</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<repositories>
<repository>
<id>gitverse</id>
<url>https://gitverse.ru/api/packages/author/maven/</url>
</repository>
</repositories>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<distributionManagement>
<repository>
<id>gitverse</id>
<url>https://gitverse.ru/api/packages/author/maven/</url>
</repository>
<snapshotRepository>
<id>gitverse</id>
<url>https://gitverse.ru/api/packages/author/maven/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>ru.gitverse.tutorials.helloworld.HelloWorld</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>См. комментарии к pom.xml первого и второго проектов из примера создания и подключения пакета Maven.
javaMavenBuildDemo.yaml
Файл javaMavenBuildDemo.yaml следует расположить в директории .gitverse/workflows/ вашего проекта, он определяет конфигурацию работы CI/CD для GitVerse.
Код файла:
name: Установка пакета Maven
on:
push:
jobs:
build-test:
name: Maven Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3 # Checkout the repository code
- name: Set Git user email and name
run: |
git config --local user.email "author@gitverse.ru"
git config --local user.name "author"
- name: Install Maven
run: |
apt-get update
apt-get -y install maven
- name: build maven package
run: |
mvn clean package
- name: Push to remote branch
run: |
git checkout -b new-maven-build-branch
git add .
git commit -m "Added"
git push origin new-maven-build-branch --forceСтруктура:
name: Установка пакета Maven— название шага в вашем workflow, которое описывает действие этого шага.on: push— событие, на которое реагирует workflow — в данном случае, это push в репозиторий.jobs— ключевое слово, указывающее на начало определения задач (jobs) в вашем workflow.build-test— название задачи (job) в вашем workflow, описывающее что будет выполняться в этой задаче.runs-on: ubuntu-latest— указывает, что задача будет выполняться на последней версии Ubuntu.steps— ключевое слово, указывающее на начало определения шагов в вашей задаче.uses: actions/checkout@v3— этот шаг использует действие (action) для проверки (checkout) кода репозитория.name: Set Git user email and name— название этого шага описывает установку почты и имени пользователя Git.run: |— этот ключевой момент начинает многострочный скрипт, который будет выполняться в этом шаге.git config --local user.email "author@gitverse.ru"— устанавливает email пользователя Git.git config --local user.name "author"— устанавливает имя пользователя Git.
name: Install Maven— название этого шага описывает установку Maven.run: |— начало скрипта для установки Maven.apt-get update— обновляет список пакетов Ubuntu.apt-get -y install maven— устанавливает Maven с подтверждением без запроса.
name: build maven package— название этого шага описывает сборку пакета с помощью Maven.run: |— начало скрипта для сборки пакета Maven.mvn clean package— команда для очистки и сборки проекта с помощью Maven.name: Push to remote branch— название этого шага описывает отправку изменений в удаленную ветку.
run: |— начало скрипта для отправки изменений.git checkout -b new-maven_build-branch— создает новую ветку new-maven_build-branch.git add .— добавляет все изменения в индекс.git commit -m "Added"— делает коммит с сообщением “Added”.git push origin new-maven_build-branch --force— отправляет изменения в удаленную ветку new-maven_build-branch с принудительным обновлением.
CI/CD Сборка
Получите токен раннера
Создайте токен раннера в профиле репозитория во вкладке Настройки > Раннеры > Добавить раннер > пиктограмма копирования раннера:

Зарегистрируйте раннер
sudo ./act_runner registerОтправьте изменения в удаленный репозиторий
git push -u origin makefile-buildЗапустите раннер
sudo ./act_runner daemonСтатус раннера сменится на активный:

Раннер сработает на событие push ранее отправленной ветки makefile-build и далее будет срабатывать при каждом событии push.
Через некоторое время раннер выполнит задачи:
![]()
Перейдите в профиль репозитория > CI/CD, выберите ваш поток. Отобразится статус выполнения:

Проверка сборки
Обновите ваш локальный репозиторий, сохраните изменения в текущей ветке и перейдите в ветку makefile-build-branch:
git pull
git add .
git commit -m "ваш комментарий"
git switch new-maven-build-branchПроверьте сборку:
$ java -jar target/hello-world-module-0.0.1.jar
Hello, World!