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

Как публиковать сборки для Artifactory от GitLab CI?

Я ищу простой и чистый способ опубликовать сборку артефактов с помощью GitLab CI на Artifactory.

Я смог определить https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb, но я не смог найти какую-либо документацию относительно того, как я должен настраивать ее, чтобы она работала.

Примечание. Я ищу подход gitlab_ci.yaml, а не как его реализацию извне.

4b9b3361

Ответ 1

На базовом уровне это можно сделать с помощью инструментов JFrog CLI. Если вы не хотите встраивать конфигурацию в свой .gitlab-ci.yml(я этого не делаю), вам сначала нужно запустить (на вашем бегуне):

jfrog rt c

По умолчанию будет указан ваш URL-адрес Artifactory и ключ API. После ввода этих элементов вы найдете ~/.jfrog/jfrog-cli.conf, содержащий JSON, например:

    {
      "artifactory": {
        "url": "http://artifactory.localdomain:8081/artifactory/",
        "apiKey": "AKCp2V77EgrbwK8NB8z3LdvCkeBPq2axeF3MeVK1GFYhbeN5cfaWf8xJXLKkuqTCs5obpzxzu"
      }
    }

Вы можете скопировать этот файл в домашний каталог бегунов GitLab - в моем случае /home/gitlab -runner/.jfrog/jfrog-cli.conf

Как только это будет сделано, бегун будет аутентифицироваться с помощью Artifactory, используя эту конфигурацию. Есть несколько других возможностей для аутентификации, если вы не хотите использовать ключи API - проверьте документы JFrog CLI.

Перед тем, как продолжить, убедитесь, что исполняемый файл jfrog находится в известном месте с разрешениями на выполнение для пользователя gitlab-runner. Отсюда вы можете вызвать утилиту в своем .gitlab-ci.yml - вот минимальный пример для приложения node.js, которое передаст тег Git как версию артефакта:

stages:
  - build-package
build-package:
  stage: build-package
  script:
    - npm install
    - tar -czf test-project.tar.gz *
    - /usr/local/bin/jfrog rt u --build-name="Test Project" --build-number="${CI_BUILD_TAG}" test-project.tar.gz test-repo

Ответ 2

Если вы строите с помощью maven, мне это удалось:

Примечание: вам нужно иметь свои искусственные учетные данные (пользователь и пароль).

  • Создайте главный пароль и сгенерируйте зашифрованный пароль. Процедуру создания masterpassword можно найти здесь

  • В настройках вашего конвейера в gitlab создайте 2 секретные переменные, одну для имени пользователя и другую для зашифрованного пароля.

  • Обновите или создайте файл settings.xml в каталоге .m2 для сборки maven. Ваш файл settings.xml должен выглядеть следующим образом:

<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
    xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <id>central</id>
      <username>${env.ARTIFACTORY_USER}</username>
      <password>${env.ENCRYPTED_PASS}</password>
    </server>
  </servers>
</settings>

Ответ 3

Я знаю, что это точно не отвечает на ваш вопрос, но я попал на этот вопрос из соответствующего поиска, поэтому я подумал, что это может иметь отношение и к другим:

Я закончил использование задания mvn deploy, которое было привязано к этапу deploy для gitlab.

Вот соответствующая часть задания:

deploy:jdk8:
  stage: test
  script:
    - 'mvn $MAVEN_CLI_OPTS deploy site site:stage'
  only:
    - master
  # Archive up the built documentation site.
  artifacts:
    paths:
    - target/staging
  image: maven:3.3.9-jdk-8