Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.
Введение
В этом руководстве показано, как создать рабочий процесс, который выполняет непрерывную интеграцию (CI) для вашего проекта Java с помощью системы сборки Ant. Создаваемый рабочий процесс позволит увидеть, когда фиксации в запросе на вытягивание вызывают сбои в сборке или тестировании ветви по умолчанию; этот подход поможет убедиться, что ваш код всегда работоспособен. Можно расширить рабочий процесс CI, чтобы передать артефакты через выполнение рабочего процесса.
Средства выполнения, размещенные на GitHub, имеют кэш средств с предварительно установленным программным обеспечением, включающим в себя комплекты SDK для Java (JDK) и Ant. Список программного обеспечения и предварительно установленных версий для JDK и Ant см. в разделе О средствах выполнения, размещенных в GitHub.
Предварительные требования
Требуются знания YAML и синтаксиса GitHub Actions. Дополнительные сведения см. в разделе:
Рекомендуется иметь базовое представление о Java и платформе Ant. Дополнительные сведения см. в руководстве по Apache Ant.
Использование локальных средств выполнения тестов для GitHub Enterprise Server
При использовании действий установки (таких как actions/setup-LANGUAGE
) в GitHub Enterprise Server с использованием локальных средств выполнения тестов может потребоваться настроить в них кэш инструментов, у которых отсутствует доступ к Интернету. Дополнительные сведения см. в разделе Настройка кэша инструментов для локально размещенных средств выполнения без доступа к Интернету.
Использование начального рабочего процесса Ant
GitHub предоставляет начальный рабочий процесс Ant, который будет работать для большинства проектов Java на базе Ant. Дополнительные сведения см. в разделе Начальный рабочий процесс Ant.
Чтобы быстро приступить к работе, при создании нового рабочего процесса можно выбрать предварительно настроенный начальный рабочий процесс Ant. Дополнительные сведения см. в разделе Краткое руководство по 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 Ant
run: ant -noinput -buildfile build.xml
Этот рабочий процесс выполняет следующие действия:
- На шаге
checkout
в средство выполнения скачивается копия репозитория. - На
setup-java
этом шаге настраивается Eclipse Temurin (Java) JDK 17 от Eclipse Adoptium. - На шаге "Сборка с помощью Ant" целевой объект по умолчанию запускается в
build.xml
в неинтерактивном режиме.
Начальные рабочие процессы по умолчанию — это отличные отправные точки при создании рабочего процесса сборки и тестирования, а также начальный рабочий процесс можно настроить в соответствии с потребностями проекта.
Выполнение заданий в другой операционной системе
Начальный рабочий процесс настраивает задания для запуска в 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
.
Создание и тестирование кода
Вы можете использовать те же команды, которые используются для создания и тестирования кода в локальной среде.
Начальный рабочий процесс выполнит целевой объект по умолчанию, указанный в вашем файле build.xml. Целевой объект по умолчанию обычно будет настроен на сборку классов, выполнение тестов и классов пакетов в их распространяемом формате, например файл JAR.
Если вы используете разные команды для сборки проекта или хотите выполнить другой целевой объект, это можно указать. Например, может понадобиться выполнить целевой объект jar
, настроенный в файле _build-ci.xml_
.
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Ant jar target
run: ant -noinput -buildfile build-ci.xml jar
Упаковка данных рабочего процесса в виде артефактов
После успешной сборки и прохождения тестов может потребоваться передать полученные пакеты Java в виде артефакта сборки. Полученные пакеты будут храниться как часть выполнения рабочего процесса и их можно будет скачать. Артефакты помогут вам протестировать и отладить запросы на вытягивание в локальной среде до их слияния. Дополнительные сведения см. в разделе Хранение данных рабочего процесса в виде артефактов.
Как правило, Ant создает выходные файлы, такие как JAR, EAR или WAR, в каталоге build/jar
. Содержимое этого каталога можно передать с помощью действия upload-artifact
.
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- run: ant -noinput -buildfile build.xml
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/jar