Введение
В этом руководстве показано, как создать рабочий процесс с непрерывной интеграцией (CI) для вашего Java-проекта с помощью инструмента управления проектами Maven. Создаваемый рабочий процесс позволит увидеть, когда фиксации в запросе на вытягивание вызывают сбои в сборке или тестировании ветви по умолчанию; этот подход поможет убедиться, что ваш код всегда работоспособен. Рабочий процесс CI можно расширить для кэширования файлов и отправки артефактов из запуска рабочего процесса.
GitHub размещённые раннеры имеют кэш инструментов с предустановленным программным обеспечением, включающим Java Development Kits (JDK) и Maven. Список программного обеспечения и предварительно установленных версий JDK и Maven см. в разделе Средства выполнения тестов, размещенные в GitHub.
Необходимые компоненты
Требуются знания YAML и синтаксиса GitHub Actions. Дополнительные сведения см. в разделе: * Синтаксис рабочего процесса для GitHub Actions * Написание рабочих процессов
Рекомендуем иметь базовое понимание Java и фреймворка Maven. Дополнительные сведения см. в руководстве по началу работы с Maven в документации Maven.
Использование шаблона рабочего процесса Maven
Чтобы быстро приступить к работе, добавьте шаблон рабочего процесса в .github/workflows каталог репозитория.
GitHub предоставляет шаблон рабочего процесса для Maven, который должен работать для большинства Java проектов Maven. В последующих разделах этого руководства приведены примеры настройки этого шаблона рабочего процесса.
-
На GitHubперейдите на главную страницу репозитория. данных repositories.repositories.actions-tab %} 1. Если в вашем репозитории уже используется рабочий процесс, нажмите кнопку Создать рабочий процесс.
-
На странице "Выбор рабочего процесса" показан выбор рекомендуемых шаблонов рабочих процессов. Поискайте «Java с Maven».
-
В рабочем процессе «Java с Maven» нажмите Configure.
-
Измените рабочий процесс по мере необходимости. Например, измените версию Java.
-
Щелкните Зафиксировать изменения.
Файл maven.yml рабочего процесса добавляется в .github/workflows каталог репозитория.
Указание версии и архитектуры Java
Шаблон рабочего процесса настраивает PATH содержащий OpenJDK 8 для платформы x64. Если вы хотите использовать другую версию Java или выбрать другую архитектуру (x64 или x86), можно использовать действие setup-java для выбора другой среды выполнения Java.
Например, чтобы использовать JDK версии 11, предоставляемой Adoptium для платформы x64, можно выполнить действие setup-java и установить параметры java-version,distribution и architecture на '11', 'temurin' и x64.
steps:
- uses: actions/checkout@v5
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
steps:
- uses: actions/checkout@v5
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
Дополнительные сведения см. в описании действия setup-java.
Создание и тестирование кода
Вы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде.
Шаблон рабочего процесса будет запускать целевой package объект по умолчанию. В конфигурации Maven по умолчанию эта команда скачивает зависимости, выполняет сборку классов, проводит тесты и упаковывает классы в распространяемый формат, например в JAR-файл.
Если вы используете другие команды для сборки проекта или хотите выполнить другой целевой объект, это можно указать. Например, может потребоваться запустить целевой объект, настроенный verify``pom-ci.xml в файле.
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Maven verify phase
run: mvn --batch-mode --update-snapshots verify
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
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@v5
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn --batch-mode --update-snapshots verify
steps:
- uses: actions/checkout@v5
- name: Set up JDK 17
uses: actions/setup-java@v4
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@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v4
with:
name: Package
path: staging
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v4
with:
name: Package
path: staging