ARTIFACTORY: Docker构建+与ARTIFACTORY的Gitlab集成,并使用JFrog x射线扫描作为JFrog项目的一部分
这篇知识库文章的目的是使用GitLab作为CI/CD工具启动docker构建过程,并通过一个简单的用例将其与Artifactory集成。我们使用了JFrog平台的SaaS版本。然而,这个用例对于自托管的JFrog平台也是有效的。
介绍
GitLab可以作为一个CI/CD工具使用,它还有许多其他的特性。为了将GitLab与JFrog Artifactory集成,目前还没有现成的插件可用。但是,我们可以使用我们自己的CLI工具JFrog CLI来集成它。我们可以使用JFrog CLI构建多种包类型。关于JFrog CLI的更多细节将在本文中提到融合页面。
在这篇知识库文章中,我们将讨论docker构建。docker的构建有四个步骤
- 创建一个GitLab项目,并将所有需要的文件上传到GitLab存储库。
- 从Docker Hub提取一个基本映像。
- 使用我们提取的映像构建docker映像。步骤# 2和# 3将作为Dockerfile的一部分完成。
- 在推到工件之前,对图像进行扫描。您可以在这里找到更多关于按需扫描的详细信息这个页面。请注意,它将引用监视和策略,并且策略有一个规则,如果映像包含任何漏洞,则构建失败。
- 将映像推送到Artifactory并发布构建信息。
- 使用JFrog x射线扫描构建。
JFrog平台设置:
我们在JFrog平台中有以下配置。请注意,我们将推动构建和扫描它作为一个项目的一部分。有关该项目的更多细节,请参考这个文档。
1.我们首先创建了一个项目,它看起来像下面-
2.我们创建了一个虚拟存储库,一个远程存储库和一个本地存储库,我们将本地存储库和远程存储库合并到虚拟存储库中,我们将使用虚拟存储库作为端点
3.x光配置必须完成如下-
a .在我们运行管道之前创建一个监视和策略。否则x射线扫描将无法成功。请按照以下链接创建监视和策略-
使用此链接- //www.si-fil.com/confluence/display/JFROG/Creating+Xray+Policies+and+Rules创建策略和规则
使用此链接- //www.si-fil.com/confluence/display/JFROG/Configuring+Xray+Watches创建监视并添加存储库、构建、策略和规则
B.确保在创建策略时在规则中启用以下选项
C.需要在JFrog平台的索引资源中包含构建。2022世界杯阿根廷预选赛赛程但是,当第一次使用x射线扫描步骤创建构建时,它将跳过x射线扫描步骤,因为构建未包含在Indexed Resources中。2022世界杯阿根廷预选赛赛程这就是为什么建议使用include或Exclude模式来包含构建。在这个例子中,Include模式是" */** "。这意味着平台将把推送到Artifactory的所有构建添加到索引资源中2022世界杯阿根廷预选赛赛程
有关索引资源的更多详细信息,还建议您阅读这篇知识库文章- h2022世界杯阿根廷预选赛赛程ttps://www.si-fil.com/knowledge-base/xray-how-to-index-and-scan-all-builds-in-xray-in-the-unified-platform/
码头工人文件:
要进行docker构建,我们需要创建一个docker文件。docker文件内容如下-从nginx:高山
执行rm /etc/nginx/conf.d/*
运行echo "files are deleted"
/public/helloworld.conf /etc/nginx/conf.d/
COPY ./public/index.html /usr/share/nginx/html/
COPY ./public/ artic -error.txt /usr/share/nginx/html/
docker文件实际上正在执行以下项目
- 拉一个Nginx镜像
- 删除文件夹“/etc/nginx/conf.d/”中的所有内容。
- 显示所有文件已被删除的消息
- 复制我们上传到GitLab存储库的所有文件,将其复制到特定的文件位置。
GitLab设置:
我们需要有下面的GitLab设置-
1.首先在GitLab中创建一个项目。您可以使用以下链接找到有关如何创建项目的详细信息-
B. Youtube链接- https://www.youtube.com/watch?v=DGuMvGYZ7lY
2.将所有必需的文件上传到GitLab存储库,如步骤# 1中的链接所述。它看起来像这样
从上面的截图中可以看到,创建了一个“公共”文件夹。这个文件夹包含我复制到Docker文件中提到的特定文件夹的所有文件。它看起来像这样
3.单击settings按钮,并确保启用了CI/CD选项,如下面的截图所示。否则,您将看不到必须检查管道运行状态的CI/CD选项
4.现在在设置中创建变量,如下所示。我们将在管道脚本中使用这些变量
定义的变量如下-
ART_DOCKER_PASS: <访问Artifactory docker存储库的密码。一般来说,它与您登录到JFrog UI并查看docker存储库>相同
ART_DOCKER_REG: test.jfrog.io
ART_DOCKER_USER:
ART_PLAT_PASS: <登录JFrog UI>的密码
ART_PLAT_URL: https://test.jfrog.io
ART_PLAT_USER: <用户名登录JFrog UI>
ARTIFACTORY_PROJECT_KEY: <在JFrog平台设置>下的步骤# 1中所示的项目中定义的项目密钥
5.现在添加一个名为“.gitlab-ci”的文件。在GitLab项目中。具体如何添加文件,请参考本文档https://docs.gitlab.com/ee/ci/quick_start/
6.现在在刚刚添加的yaml文件中添加以下内容docker-build:
使用官方docker镜像。
图片:码头工人:最新
阶段:构建
服务:
码头工人:dind
before_script:
——更新curl && rm -rf /var/cache/apk/*
# docker登录Artifactory
- docker login -u "$ART_DOCKER_USER" -p "$ART_DOCKER_PASS" $ART_DOCKER_REG . sh
#安装JFrog CLI
- curl - fl https://install-cli.jfrog.io | sh . sh
—chmod +x /usr/local/bin/jf
#使用JFrog CLI配置Artifactory实例
——pwd
- CD /usr/local/bin/
- ./jf——version
- ./jf c add artifactory-server——url=$ART_PLAT_URL——user=$ART_PLAT_USER——password=$ART_PLAT_PASS
脚本:
# docker build
-docker build——pull -t "$ART_DOCKER_REG/dct-docker/test:$CI_JOB_ID" /builds/ swarnendkayal /docker-jfrog . conf
- CD /usr/local/bin/
#按需扫描
- ./jf docker扫描“$ART_DOCKER_REG/dct-docker/test:$CI_JOB_ID”——project=$ARTIFACTORY_PROJECT_KEY
# Docker push
- ./jf rt docker-push "$ART_DOCKER_REG/ dpt -docker/test:$CI_JOB_ID" dpt -docker——build-name=docker-jfrog——build-number=$CI_JOB_ID——project=$ARTIFACTORY_PROJECT_KEY
#收集环境变量
- ./jf rt bce docker-jfrog $CI_JOB_ID——project=$ARTIFACTORY_PROJECT_KEY . sh
#传递构建信息给Artifactory
- ./jf rt bp docker-jfrog $CI_JOB_ID——project=$ARTIFACTORY_PROJECT_KEY . sh
#扫描docker构建
- ./jf bs docker-jfrog $CI_JOB_ID——project=$ARTIFACTORY_PROJECT_KEY . sh
#在存在Dockerfile的分支中运行此作业
规则:
—if: $CI_COMMIT_BRANCH
存在:
——Dockerfile
请注意,位置“/builds/ swarnendkayal /docker-jfrog”被配置为定义了在进行docker构建时,Dockerfile将从其中引用文件的GitLab存储库路径。此位置将更改项目到项目以及概要文件到概要文件。
例如:我的示例项目的URL是-
如果URL如下- https://gitlab.com/abc/test-jfrog/-/blob/master/.gitlab-ci.yml,那么位置将是"/构建/ abc / test-jfrog”。请根据您的项目和存储库位置进行更改。
保存此文件后,它将立即触发构建,您可以找到构建状态,如下所示
构建显示失败,因为定义了x射线策略,如果捕捉到任何漏洞,则构建失败。
构建在JFrog平台上是什么样子的?
1.构建将出现在构建部分中,如下所示
2.单击构建后,它将显示构建号,如下所示
正如您所看到的,在扫描构建和给出违规时,x射线状态也会显示出来。如果您想检查特定于构建号的x射线状态,然后单击构建号,然后转到“x射线数据”,如下所示
3.在我们把它推到人工工厂之前,我们已经对图像进行了扫描,可以在这里看到-
请注意,我们在这里所做的步骤,除了docker构建步骤,基本上都是这个博客- //www.si-fil.com/blog/manage-your-docker-builds-with-jfrog-cli-in-5-easy-steps/中提到的步骤。为了更清楚地了解JFrog CLI是如何与docker一起工作的,请仔细阅读它。
