CI/CD сборка Maven
В этом разделе рассмотрен пример настройки CI/CD для сборки Java-проекта с помощью Maven.
Для проверки данного сценария подготовлена специальная ветка maven-build в репозитории CICD_building_projects (см. репозиторий gitverse_tutorials/CICD_building_projects, ветка maven-build).
Подготовительные действия
- Создайте новый репозиторий, например, CICD_building_projects.
- Установите Java Development Kit (JDK). На Ubuntu:
sudo apt update
sudo apt install default-jdkПроверьте, что компилятор Java установлен:
javac -version- Скачайте раннер GitVerse и сделайте файл исполняемым:
chmod +x act_runner- Установите Docker (если еще не установлен).
- В настройках созданного репозитория включите CI/CD, а также разрешите Запросы на слияние.
- Установите 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— пушит ветку (с перезаписью истории, если нужно).