ARTIFACTORY: Docker构建+与ARTIFACTORY的Gitlab集成,并使用JFrog x射线扫描作为JFrog项目的一部分

Swarnendu Kayal
2023-01-22 11:06

这篇知识库文章的目的是使用GitLab作为CI/CD工具启动docker构建过程,并通过一个简单的用例将其与Artifactory集成。我们使用了JFrog平台的SaaS版本。然而,这个用例对于自托管的JFrog平台也是有效的。

介绍

GitLab可以作为一个CI/CD工具使用,它还有许多其他的特性。为了将GitLab与JFrog Artifactory集成,目前还没有现成的插件可用。但是,我们可以使用我们自己的CLI工具JFrog CLI来集成它。我们可以使用JFrog CLI构建多种包类型。关于JFrog CLI的更多细节将在本文中提到融合页面

在这篇知识库文章中,我们将讨论docker构建。docker的构建有四个步骤

  1. 创建一个GitLab项目,并将所有需要的文件上传到GitLab存储库。
  2. 从Docker Hub提取一个基本映像。
  3. 使用我们提取的映像构建docker映像。步骤# 2和# 3将作为Dockerfile的一部分完成。
  4. 在推到工件之前,对图像进行扫描。您可以在这里找到更多关于按需扫描的详细信息这个页面。请注意,它将引用监视和策略,并且策略有一个规则,如果映像包含任何漏洞,则构建失败。
  5. 将映像推送到Artifactory并发布构建信息。
  6. 使用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文件实际上正在执行以下项目

  1. 拉一个Nginx镜像
  2. 删除文件夹“/etc/nginx/conf.d/”中的所有内容。
  3. 显示所有文件已被删除的消息
  4. 复制我们上传到GitLab存储库的所有文件,将其复制到特定的文件位置。

GitLab设置:

我们需要有下面的GitLab设置-

1.首先在GitLab中创建一个项目。您可以使用以下链接找到有关如何创建项目的详细信息-

A. GitLab官方链接- https://docs.gitlab.com/ee/user/project/working_with_projects.html
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一起工作的,请仔细阅读它。