Artifactory:如何使用JFrog CLI来构建和发布Nuget项目,以及如何扫描它,以及在被JFrog x射线扫描后会发生什么
从Visual Studio创建Nuget包:
为了使用JFrog CLI进行构建,我们需要从Visual Studio创建一个。net项目。请按照下面的说明操作
1.使用此链接- https://docs.microsoft.com/en-us/visualstudio/ide/create-new-project?view=vs-2019创建一个。net项目
2.在创建项目之后,您应该在Visual Studio的解决方案窗口中看到类似的文件夹结构,您可以在其中找到一个名为dependencies的文件夹,如下所示
3.右键单击“Dependencies”文件夹,然后单击“Manage Nuget Packages”并安装所需的依赖项。您也可以参考这个链接- https://docs.microsoft.com/en-us/nuget/quickstart/install-and-use-a-package-in-visual-studio。我目前正在安装“log4net:2.0.8”包,因为它有漏洞,将被JFrog x射线扫描。
使用JFrog CLI构建和发布:
1.使用以下链接安装JFrog CLI - //m.si-fil.com/getcli-legacy/。我使用的是JFrog CLI V1。
2.使用Artifactory配置JFrog CLI,如下所示
$ ./jfrog rt config . conf
[警告]jfrog rt config命令已弃用。请使用“jfrog config”命令代替。你可以这样使用它:
该命令包括以下子命令:“jfrog config add”、“jfrog config edit”、“jfrog config show”、“jfrog config remove”、“jfrog config import”和“jfrog config export”。
注意:切换到新命令时,请将“-url”替换为“-artifactory-url”。
例如:
旧语法:"jfrog rt config
新语法:"jfrog config add
服务器ID [kayal-saas]: test-saas
JFrog平台URL [https://test.jfrog]。io /): https://test.jfrog.io
JFrog访问令牌(用户名和密码/API密钥留空):
JFrog用户名[sandeep]: testuser
JFrog密码或API密钥:
Artifactory反向代理是否配置为接受客户端证书?(y / n) [n] ?
$ ./jfrog -version
Jfrog版本1.51.1
3.使用下面的命令-使用新创建的配置
$ ./jfrog config use test-saas
使用服务器ID 'test-saas' (https://test.jfrog.io/)。
4.运行JFrog rt命令配置“dotnet”如下所示
$ ~/Downloads/jfrogcli/jfrog rt dotnetc
配置文件已经存在
从Artifactory解决依赖关系?(y / n) [y]吗?
设置人工服务器ID [test-saas]:
为依赖项解析设置存储库(按Tab键选项):k-nuget
使用NuGet V2协议?(y / n) [n] ?
[Info] dotnet build config成功创建。
5.然后做“。net”恢复,如下所示
$ ~/Downloads/jfrogcli/jfrog rt dotnet restore -s nuget。config -build-name ="NugetTest" -build-number ="1"
[信息]运行dotnet…
确定项目以恢复…
恢复/用户/ testuser /下载/ nuget / nuget / nuget。Csproj(在303毫秒内)。
6.“nuget。“Csproj”文件看起来像这样
<项目Sdk = " Microsoft.NET.Sdk.Web " >
< PropertyGroup >
< TargetFramework > netcoreapp3.1 < / TargetFramework >
真正< IsPackable > < / IsPackable >
< / PropertyGroup >
< ItemGroup >
< / ItemGroup >
< ItemGroup >
< packagerreference Include="log4net" Version="2.0.8" />
< / ItemGroup >
> < /项目
7.然后按如下方式打包文件
$ ~/Downloads/jfrogcli/jfrog rt dotnet pack NugetTest/NugetTest。csproj -build-name ="NugetTest" -build-number ="1"
[信息]运行dotnet…
Microsoft (R) Build Engine version 16.11.0+0538acc04 for .NET
微软公司版权所有。版权所有。
确定项目以恢复…
恢复/用户/ testuser /下载/ nuget / nuget / nuget。Csproj(318毫秒)。
NugetTest -> /Users/testuser/Downloads/ NugetTest/ NugetTest/bin/Debug/netcoreapp3.1/NugetTest.dll
NugetTest -> /Users/testuser/Downloads/ NugetTest/ NugetTest/bin/Debug/netcoreapp3.1/NugetTest. views .dll
成功创建包'/Users/testuser/Downloads/nugetTest/ nugetTest/ bin/Debug/ nugetTest .1.0.0.nupkg'。
8.然后上传打包的文件“NugetTest.1.0.0”。nupkg”文件到“bin/Debug”目录下创建的Artifactory,如下所示
$ ~/Downloads/jfrogcli/jfrog rt u bin/Debug/NugetTest.1.0.0。nupkg k-nuget -build-name ="NugetTest" -build-number ="1"
日志路径:“/Users/testuser/.jfrog/logs/jfrog-cli.2021-10-07.23-09-49.21194.log”
{
“状态”:“成功”,
“合计”:{
“成功”:1、
“失败”:0
}
}
该文件将部署到Artifactory,如下所示
9.然后将构建发布到Artifactory -
$ ~/Downloads/jfrogcli/jfrog rt bp NugetTest
[信息]部署构建信息…
[Info] Build Info成功部署。在https://test.jfrog.io/artifactory/webapp/builds/NugetTest/1下的Artifactory中浏览它
使用x射线扫描构建:
1.将构建添加到索引资源-
2.如果构建没有索引,运行上面提到的Rest API融合具有以下有效载荷的页面
{
:“artifactory_id artifactory_saas”,
“构建”:(
{
“名称”:“nuget”,
“数量”:“1”
}
]
}
3.使用此链接- //m.si-fil.com/confluence/display/JFROG/Creating+Xray+Policies+and+Rules创建策略和规则
4.使用此链接- //m.si-fil.com/confluence/display/JFROG/Configuring+Xray+Watches创建监视并添加存储库、构建、策略和规则
5.添加构建后,触发历史扫描,如下所示
6.一旦建立索引,就应该自动扫描构建或包。请按照这个KB - //m.si-fil.com/knowledge-base/xray-how-to-index-and-scan-all-builds-in-xray-in-the-unified-platform/以便索引和扫描所有构建在x射线。
x线扫描期望:
1.在执行上述步骤之后,构建被正确扫描,我们可以看到该构建的x射线状态显示为“Critical”,如下所示
2.Xray不会报告“NugetTest.1.0.0.nupkg”包的任何违规行为。它的预期行为是包“NugetTest.1.0.0”。Nupkg“只包含包的元数据信息”log4net.2.0.8。Nupkg”,而不是物理文件。
3.即使存储库“k-nuget-local”是watch的一部分,并且已经触发了watch的历史扫描,包的x射线数据也不会显示违规。
4.x射线扫描“build-info”中存在的任何依赖项。json文件。在构建中,我们可以看到依赖项“log4net:2.0.8”在那里,构建被x射线扫描并报告违规。
5.扫描之后,构建的x射线数据显示了如下所示的违规行为
