我在下面使用不同的门户网站进行了构建。我对下面的代码行感到困惑。
docker push
而不是./jfrog rt dp
吗?如果我使用它们中的任何一个,有什么区别。
- ./ jfrog rt bce gitlabci-docker-artifactory $ CI_JOB_ID
- ./ jfrog rt bp gitlabci-docker-artifactory $ CI_JOB_ID
image: arielkv/dind-glibc:latest
services:
- docker:dind
stages:
- Install
- build
before_script:
- apk update
- apk add go curl
- curl -fL https://getcli.jfrog.io | sh
- ./jfrog rt config MyArtifactory --url $ARTIFACTORY_URL --user $ARTIFACTORY_USER --apikey $ARTIFACTORY_PASS
- docker login -u $ARTIFACTORY_USER -p $ARTIFACTORY_PASS $ARTIFACTORY_DOCKER_REPOSITORY
Build:
stage: build
script:
- docker build --rm=false --build-arg NODE_ENV=prod -t $ARTIFACTORY_DOCKER_REPOSITORY/artifactory-alpine:$CI_JOB_ID .
- docker run -d -p 8081:8081 $ARTIFACTORY_DOCKER_REPOSITORY/artifactory-alpine:$CI_JOB_ID; sleep 10
#- docker push $ARTIFACTORY_DOCKER_REPOSITORY/artifactory-alpine:$CI_JOB_ID
- ./jfrog rt dp $ARTIFACTORY_DOCKER_REPOSITORY/artifactory-alpine:$CI_JOB_ID $DOCKER_REPOSITORY_KEY --build-name=gitlabci-docker-artifactory
--build-number=$CI_JOB_ID
- ./jfrog rt bce gitlabci-docker-artifactory $CI_JOB_ID
- ./jfrog rt bp gitlabci-docker-artifactory $CI_JOB_ID
only:
- master
答案 0 :(得分:0)
1)您当然可以使用docker push
代替JFrog CLI。为此,您需要执行三个命令:
docker login myserver:8081
docker tag retgits/distroless-go:latest myserver:8081/docker/distroless-go:1
docker push myserver:8081/docker/distroless-go:1
在命令中
2a)命令./jfrog rt bce gitlabci-docker-artifactory $CI_JOB_ID
收集执行该命令的当前容器或机器的环境变量。可以使用build-publish命令排除环境变量。在此特定命令中,gitlabci-docker-artifactory
是显示在JFrog Artifactory中的内部版本名称,而$CI_JOB_ID
是内部版本号。
2b)命令./jfrog rt bp gitlabci-docker-artifactory $CI_JOB_ID
将向JFrog Artifactory发布收集的构建信息(环境变量和其他一些元数据)。在此特定命令中,gitlabci-docker-artifactory
是显示在JFrog Artifactory中的内部版本名称,$CI_JOB_ID
是内部版本号
在OP评论后编辑:
命令docker push
将docker映像放入JFrog Artifactory,但不会捕获环境变量和在构建期间生成的一些其他元数据。如果那很重要,您也将要运行其他两个命令。如果您只想存储docker映像,则不必使用这些命令(为公平起见,我与之交谈的大多数人和我自己都包括在内,请将这些详细信息上载到Artifactory以跟踪构建过程中发生的情况)