Подтвердить что ты не робот

Как использовать Gitlab CI для создания проекта Java Maven?

Я экспериментировал без каких-либо успехов, я запускаю Gitlab, размещенную на Linux, и пытаюсь разобраться в функциональности CI.

В соответствии с документацией Gitlab вам нужно создать файл .gitlab-ci.yml, реализацию Gitlab Travis-CI. Теперь из внешнего вида вы можете многое сделать с помощью .gitlab-ci.yml, но большая часть документации связана с Ruby и другими языками. Ничего не сказано о том, как создавать проекты Java Maven.

Как я могу создать простое приложение на Java? Могу ли я использовать общий бегун, или я должен использовать конкретный бегун, в этом случае, какую или какую реализацию бегуна я должен выбрать: ssh, docker или shell? Затем, что я должен поместить в файл .gitlab-ci.yml, по крайней мере, для создания проекта с помощью Maven?

4b9b3361

Ответ 1

Зарегистрируйте бегун Docker и используйте один из официальных изображений Mock Docker, например maven:3-jdk7 в файле .gitlab-ci.yml:

image: maven:3-jdk-7

build:
  script: "mvn install -B"

Обратите внимание на флаг -B , который рекомендуется для неинтерактивного использования.

Насколько я понимаю, неважно, является ли бегун общим или конкретным.

Ответ 2

Документация описывает синтаксис YAML, используемый для управления сборками:

Итак, почему бы вам не попробовать начать со следующего?:

job1:
  script: "mvn package"

Предположительно это будет работать, только если Maven уже установлен, поэтому вам понадобится runner, который поддерживает это.

Я не использовал GitLab, но документация предлагает вам дополнительно настроить его, чтобы использовать официальный образ Maven Docker для выполнения сборки. Выглядит очень интересно, но я бы согласился, что в документации отсутствует пример Java.

Ответ 3

Я хотел бы добавить немного информации здесь, ребята. Сначала дайте понять некоторую путаницу в отношении общего и конкретного бегуна.

Общий бегун: По мере того, как его имя звучит, общие участники являются экземплярами потока процесса сборки, которые могут использоваться для выполнения заданий каждого отдельного проекта в установленном экземпляре gitlab с включенной опцией Разрешенные общие бегуны. Для этого вам потребуются административные права. Согласно текущей документации gitlab, только использование с правами администратора может определять общий бегун.

конкретный бегун Этот тип бегуна выполняет задания только одного проекта.

Кроме того, это несколько важных моментов, которые следует учитывать при выборе бегуна для ваших проектов.

  • Общие участники полезны для заданий, имеющих схожие требования, между несколькими проектами. Вместо того, чтобы иметь несколько бегунов на холостом ходу для многих проектов, у вас может быть одно или небольшое количество бегунов, которые обрабатывают несколько проектов. Это упрощает обслуживание и обновление бегунов для общего набора проектов.
  • Специальные бегуны полезны для заданий, которые имеют особые требования или для проектов с особым спросом. Если задание имеет определенные требования, вы можете настроить конкретный бегун с учетом этого, не требуя этого для всех участников. Например, если вы хотите развернуть определенный проект, вы можете настроить конкретный бегун для получения правильных учетных данных для этого.

Теперь, чтобы выбрать правильный исполнитель для проекта, очень важно, чтобы у нас был вид птицы на всех доступных исполнителей для gitlab runner. Gitlab упростил эту работу, предоставив хорошую документацию по здесь, объяснив, какие у вас будут разные варианты разные исполнители.

Если вы хотите узнать больше о бегунах и разных исполнителях, я бы посоветовал вам начать с этой статьи, Gitlab Runner

Ответ 4

Я использую эту команду, но в целом документация по сборке java/maven кажется довольно редкой

maven-package:
  script: "mvn install -B"

Ответ 5

Я потратил немало времени, пытаясь настроить наши Java-проекты на Gitlab CI. Я получил работу с некоторым успехом. Как упоминалось выше, самым прямым решением является использование изображения из официального репо: https://hub.docker.com/_/maven

Однако у нас есть корпоративный прокси-сервер, который заставлял мои сборки получать запросы таймаута при выборе зависимостей проекта. Я попробовал много решений и, наконец, наткнулся на это сообщение: https://gitlab.com/gitlab-org/gitlab-ce/issues/15167.

Сама посылка заключается в настройке maven для кэширования загруженных зависимостей в локальном репо, к которому можно получить доступ между сборками. Идея состоит в том, что вы можете написать локальный файл конфигурации maven в .gitlab-ci.yml, чтобы настроить каталог кэша и ваш прокси.

before_script:
  -echo '<settings
          xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          https://maven.apache.org/xsd/settings-1.0.0.xsd">
          <localRepository>/cache/.m2</localRepository>
          <proxies>
              <proxy>
                  <active>true</active>
                  <protocol>'$PROXY_PROTOCOL'</protocol>
                  <host>'$PROXY_HOST'</host>
                  <port>'$PROXY_PORT'</port>
              </proxy>
          </proxies>
      </settings>' > $HOME/.m2/settings.xml

build_debug1:
  stage: build
  script: "echo $PROXY_HOST"

build_debug2:
  stage: build
  script: "cat $HOME/.m2/settings.xml"

build_maven:
  stage: build
  script: "mvn $MAVEN_CLI_OPTS package"
  artifacts:
    paths:
      - target/*.jar

deploy_debug1:
  stage: package
  script: "ls target/"

Обратите внимание, что задания по отладке сборки предназначены только для проверки правильности ввода параметров прокси-сервера. Вы можете установить переменные среды прокси-сервера в виде секретов с помощью Gitlab, перейдя в Project → Settings → CI/CD Pipelines → Secret Variables.

Последнее задание deploy_debug - посмотреть, что было создано в вашем целевом каталоге.