GitLab CIで作成したアーティファクトをArtifactoryに公開する簡単でクリーンな方法を探しています。
私は https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb を見つけることができましたが、私がどのように私に関するドキュメントを見つけることができませんでしたそれを動作させるように構成することになっています。
注:私はgitlab_ci.yamlアプローチを探しています。外部で実装する場合とは異なります。
基本的なレベルでは、これは 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
あなたがmavenで構築している場合、これが私が私の方法でどうにかした方法です:
注:アーティファクト認証情報(ユーザーとパス)を準備する必要があります。
マスターパスワードを作成し、そこから暗号化されたパスワードを生成します。マスターパスワードの作成方法の手順は次のとおりです ここ
Gitlabのパイプライン設定で、2つのシークレット変数を作成します。1つはユーザー名用で、もう1つは暗号化パスワード用です。
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>
.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でアーティファクトを使用する方法の詳細については、 こちら にアクセスしてください。
これはあなたの質問に正確に答えるものではないことはわかっていますが、関連する検索からこの質問にたどり着いたため、他の人にも関連しているのではないかと思いました。
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