CI/CD сборка Maven

В этом разделе рассмотрен пример настройки CI/CD для сборки Java-проекта с помощью Maven.

Для проверки данного сценария подготовлена специальная ветка maven-build в репозитории CICD_building_projects (см. репозиторий gitverse_tutorials/CICD_building_projects, ветка maven-build).

Подготовительные действия

  1. Создайте новый репозиторий, например, CICD_building_projects.
  2. Установите Java Development Kit (JDK). На Ubuntu:
sudo apt update
sudo apt install default-jdk

Проверьте, что компилятор Java установлен:

javac -version
  1. Скачайте раннер GitVerse и сделайте файл исполняемым:
chmod +x act_runner
  1. Установите Docker (если еще не установлен).
  2. В настройках созданного репозитория включите CI/CD, а также разрешите Запросы на слияние.
  3. Установите Apache Maven. На Ubuntu:
sudo apt update
sudo apt install maven

Проверьте установку:

mvn -version

Должна отобразиться информация о версии Maven и среде Java.

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-пакета в документации GitVerse.

Файл pipeline: javaMavenBuildDemo.yaml

Создайте файл javaMavenBuildDemo.yaml в директории .gitverse/workflows/ вашего проекта – это конфигурация CI/CD, выполняющая сборку Maven.

Код файла:

name: Установка пакета Maven
on:
  push:
jobs:
  build-test:
    name: Maven Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3 # Клонируем код репозитория
 
      - 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).
  • build-test: — идентификатор задачи.
  • name: Maven Build — имя (отображаемое) задачи.
  • runs-on: ubuntu-latest — задача выполняется на облачном раннере с ОС Ubuntu.
  • steps: — начало списка шагов внутри задачи:
  • uses: actions/checkout@v3 — шаг, выполняющий действие 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: ... — скрипт установки:
  • apt-get update — обновление списка пакетов.
  • apt-get -y install maven — установка Maven без подтверждения.
  • name: Build Maven package — шаг сборки Maven-пакета:
  • run: ... — скрипт сборки:
  • mvn clean package — очистка и сборка проекта Maven.
  • 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 — пушит ветку (с перезаписью истории, если нужно).