我正在寻找一种简单而干净的方法,将使用GitLab CI构建的人工制品发布到Artifactory上。
我能够发现https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb但我找不到任何关于我应该如何配置它以使其工作的文档。
注意:我正在寻找一种gitlab_ci.yaml方法,而不是在外部实现它。
答案 0 :(得分:5)
在基本级别,可以使用JFrog CLI工具完成此操作。除非你想在你的.gitlab-ci.yml
中嵌入配置(我不会),否则你首先需要跑步(在跑步者身上):
jfrog rt c
默认情况下,这将提示您的Artifactory URL和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
中调用该实用程序 - 这是一个{G}标记作为工件版本的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
答案 1 :(得分:4)
如果你正在和maven一起建造这就是我设法做到的事情:
注意:您需要准备好您的神器凭据(用户和通行证)。
创建主密码并从中生成加密密码。可以找到有关如何创建主密码的过程here
在gitlab的管道设置中,创建2个秘密变量,一个用于用户名,另一个用于加密密码。
在settings.xml
目录中为maven构建更新或创建.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
就是这样。这应该工作。您可以访问here了解有关如何使用maven的神器
的更多信息答案 2 :(得分:0)
我知道这并没有完全回答你的问题,但我从相关的搜索中得到了这个问题,所以我认为它也可能与其他人有关:
我最终使用了绑定到gitlab mvn deploy
阶段的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