web-dev-qa-db-ja.com

GitLab CIからArtifactoryにビルドを公開する方法は?

GitLab CIで作成したアーティファクトをArtifactoryに公開する簡単でクリーンな方法を探しています。

私は https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb を見つけることができましたが、私がどのように私に関するドキュメントを見つけることができませんでしたそれを動作させるように構成することになっています。

注:私はgitlab_ci.yamlアプローチを探しています。外部で実装する場合とは異なります。

16
sorin

基本的なレベルでは、これは JFrog CLI ツールで実行できます。 .gitlab-ci.ymlに構成を埋め込む場合を除き(そうではありません)、最初に(ランナーで)実行する必要があります。

jfrog rt c

これにより、デフォルトでArtifactory URLとAPIキーの入力を求められます。これらの項目を入力すると、次のようなJSONを含む~/.jfrog/jfrog-cli.confが見つかります。

    {
      "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内のユーティリティを呼び出すことができます。これは、Gitタグをアーティファクトバージョンとして渡すnode.jsアプリの最小限の例です。

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
6
Andrew Snell

あなたがmavenで構築している場合、これが私が私の方法でどうにかした方法です:

:アーティファクト認証情報(ユーザーとパス)を準備する必要があります。

  1. マスターパスワードを作成し、そこから暗号化されたパスワードを生成します。マスターパスワードの作成方法の手順は次のとおりです ここ

  2. Gitlabのパイプライン設定で、2つのシークレット変数を作成します。1つはユーザー名用で、もう1つは暗号化パスワード用です。

  3. Mavenビルド用のsettings.xmlディレクトリに.m2ファイルを更新または作成します。 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>
    
  4. .gitlab-ci.ymlファイルでは、このsettings.xmlを次のように使用する必要があります。

    image: maven:latest
    
    variables:
      MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
      MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
    
    cache:
      paths:
        - .m2/repository/
        - target/
    
    build:
      stage: build
      script:
        - mvn $MAVEN_CLI_OPTS compile
    

以上です。これはうまくいくはずです。 Mavenでアーティファクトを使用する方法の詳細については、 こちら にアクセスしてください。

5
Buba Conteh

これはあなたの質問に正確に答えるものではないことはわかっていますが、関連する検索からこの質問にたどり着いたため、他の人にも関連しているのではないかと思いました。

mvn deploy gitlabのdeployステージにバインドされたジョブ。

関連するジョブの部分は次のとおりです。

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
1
gsaslis