CI/CD сборка Maven
В данном разделе рассмотрен пример CI/CD Maven сборки проекта java.
Для проверки данного примера примера подготовлена ветка maven-build репозитория CICD_building_projects (opens in a new tab).
Подготовительные действия
-
Создайте репозиторий, например, 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!