Введение
В этом руководстве показано, как создать рабочий процесс, который выполняет непрерывную интеграцию (CI) для вашего проекта Java с помощью средства управления проектами программного обеспечения Maven. Создаваемый рабочий процесс позволит увидеть, когда фиксации в запросе на вытягивание вызывают сбои в сборке или тестировании ветви по умолчанию; этот подход поможет убедиться, что ваш код всегда работоспособен. Вы можете расширить рабочий процесс CI, чтобы кэшировать файлы и передавать артефакты через выполнение рабочего процесса.
Средства выполнения, размещенные на GitHub, имеют кэш средств с предварительно установленным программным обеспечением, включающим в себя комплекты SDK для Java (JDK) и Maven. Список программного обеспечения и предварительно установленных версий для JDK и Maven см. в разделе О средствах выполнения, размещенных в GitHub.
Предварительные требования
Требуются знания YAML и синтаксиса GitHub Actions. Дополнительные сведения см. в разделе:
Рекомендуется иметь базовое представление о Java и платформе Maven. Дополнительные сведения см. в руководстве по началу работы с Maven в документации Maven.
Использование начального рабочего процесса Maven
GitHub предоставляет начальный рабочий процесс Maven, который будет работать для большинства проектов Java на базе Maven. Дополнительные сведения см. в разделе Начальный рабочий процесс Maven.
Чтобы быстро приступить к работе, при создании рабочего процесса можно выбрать предварительно настроенный начальный рабочий процесс Maven. Дополнительные сведения см. в разделе Краткое руководство по GitHub Actions.
Этот рабочий процесс также можно добавить вручную, создав новый файл в каталоге .github/workflows
репозитория.
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build with Maven
run: mvn --batch-mode --update-snapshots package
Этот рабочий процесс выполняет следующие действия:
- На шаге
checkout
в средство выполнения скачивается копия репозитория. - На этом
setup-java
шаге настраивается Eclipse Temurin (Java) JDK 17 от Eclipse Adoptium. - На шаге "Сборка с помощью Maven" целевой объект Maven
package
запускается в неинтерактивном режиме для проверки того, что сборка кода выполняется, тесты завершаются удачно и пакет можно создать.
Начальные рабочие процессы по умолчанию — это отличные отправные точки при создании рабочего процесса сборки и тестирования, а также начальный рабочий процесс можно настроить в соответствии с потребностями проекта.
Выполнение заданий в другой операционной системе
Начальный рабочий процесс настраивает задания для запуска в Linux с помощью размещенных в GitHub средств выполнения ubuntu-latest
. Можно изменить ключ runs-on
для выполнения заданий в другой операционной системе. Например, можно использовать размещенные в GitHub средства выполнения Windows.
runs-on: windows-latest
Кроме этого, можно выполнять задания на размещенных в GitHub средствах выполнения macOS.
runs-on: macos-latest
Можно также выполнять задания в контейнерах Docker или предоставить локальное средство выполнения, которое выполняется в собственной инфраструктуре. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
Указание версии и архитектуры JVM
Начальный рабочий процесс настраивает PATH
, чтобы содержать OpenJDK 8 для платформы x64. Если вы хотите использовать другую версию Java или выбрать другую архитектуру (x64
или x86
), можно использовать действие setup-java
для выбора другой среды выполнения Java.
Например, чтобы использовать JDK версии 11, предоставляемой Adoptium для платформы x64, можно выполнить действие setup-java
и установить параметры java-version
,distribution
и architecture
на '11'
, 'adopt'
и x64
.
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11 for x64
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
architecture: x64
Дополнительные сведения см. в описании действия setup-java
.
Создание и тестирование кода
Вы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде.
Начальный рабочий процесс будет по умолчанию запускать целевой объект package
. В конфигурации Maven по умолчанию эта команда скачивает зависимости, выполняет сборку классов, проводит тесты и упаковывает классы в распространяемый формат, например в JAR-файл.
Если вы используете другие команды для сборки проекта или хотите выполнить другой целевой объект, это можно указать. Например, может понадобиться выполнить целевой объект verify
, настроенный в файле pom-ci.xml.
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Maven verify phase
run: mvn --batch-mode --update-snapshots verify
Кэширование зависимостей
Вы можете кэшировать зависимости, чтобы ускорить выполнение рабочего процесса. После успешного выполнения локальный репозиторий Maven будет храниться в кэше. При последующих запусках рабочего процесса данные из кэша восстанавливаются, так что зависимости не нужно скачивать из удаленных репозиториев Maven. Кэшировать зависимости можно просто с помощью действия setup-java
, либо можно использовать действие cache
для более сложной настройки.
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn --batch-mode --update-snapshots verify
Этот рабочий процесс сохраняет содержимое локального репозитория Maven, расположенного в каталоге .m2
домашнего каталога средства выполнения. Ключом кэша будет хэш содержимого файла pom.xml, поэтому изменения в файле pom.xml делают кэш недействительным.
Упаковка данных рабочего процесса в виде артефактов
После успешной сборки и прохождения тестов может потребоваться передать полученные пакеты Java в виде артефакта сборки. Полученные пакеты будут храниться как часть выполнения рабочего процесса и их можно будет скачать. Артефакты помогут вам протестировать и отладить запросы на вытягивание в локальной среде до их слияния. Дополнительные сведения см. в разделе Хранение данных рабочего процесса в виде артефактов.
Как правило, Maven создает выходные файлы, такие как JAR, EAR или WAR, в каталоге target
. Чтобы передать их как артефакты, их можно скопировать в новый каталог, содержащий артефакты для отправки. Например, можно создать каталог с именем staging
. Затем содержимое этого каталога можно передать с помощью действия upload-artifact
.
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v3
with:
name: Package
path: staging