首页 > 其他分享 >JFrog Artifactory 系列3 --- 仓库与配置

JFrog Artifactory 系列3 --- 仓库与配置

时间:2023-05-10 20:33:19浏览次数:47  
标签:JFrog 制品 仓库 checksum 远程 --- Artifactory

一、概念

1. 承上启下

JFrog Artifactory 系列1 --- 安装与配置

JFrog Artifactory 系列2 --- Https

2. 仓库种类

(1) 按逻辑结构划分

从逻辑上讲,最常用的制品库类型有以下三种:

a. Local Repositories(本地仓库):用于搭建私有仓库,存储组织内部制品;

b. Remote Repositories(远程仓库):用于存储(缓存)从远程仓库下载的制品,这里的下载的是按需下载,配置远程仓库可以减轻从远程仓库下载制品所带来的网络耗时,加快应用部署速度;

c. Virtual Repositories(虚拟仓库):不同于本地仓库和远程仓库,虚拟仓库并不占用物理存储。它是多个其他仓库的一个路由器,这个“其他仓库”可以是本地仓库也可以是远程仓库甚至可以是另一个虚拟仓库,可以配置虚拟仓库将指定域名的制品路由到本地仓库,其他域名的制品请求路由到远程仓库;

(2) 按照仓库存储的制品种类划分

上一篇我们看到,社区版的JFrog Artifactory仅支持5种类型的制品库,在这里我们挑选两种最常用的制品库:

a. Generic Repositories(通用仓库):通用仓库不限制制品的类型,在实际场景中可用于存储IOS或者Android包;正是由于它没有指定的仓库类型,所以该仓库不维护单独的包索引。

b. Maven Repositories(Maven仓库):用于存储JAR包;

二、通用配置

1. 通用普通配置

三种逻辑仓库的大部分配置都是类似的,它们分别是:

(1) Repository Key:仓库名称,需要全局唯一且不可修改,建议使用以下格式来命名:

<Repository Type>-<Release or Snapshot>-<Local or Remote or empty for Virtual>

比如:maven-release-local

(2) Environments:PRD或DEV环境;

(3) Repository Layout:与所选择的仓库类型相关,比如Maven可选择maven-2-default;

(4) Public Description:仓库的公开描述;

(5) Internal Description:仅对管理员公开的描述;

(6) Include and Exclude Patterns: 包含模式匹配和排除模式匹配用于制品的搜索和定位,如果一个仓库定义了Include Patterns,那么其匹配的制品搜索会被定位到该仓库中进行查找;反之,如果一个仓库定义了Exclude Pattern,其匹配的制品搜索会绕过该仓库。

如果一个仓库同时定义了Include Patterns和Exclude Pattern,那么该仓库支持的查询为“Include Patterns的集合减去Exclude Pattern的集合”。

默认情况下:Include Patterns为All,Exclude Pattern为None;

举个例子,仓库A配置了如下模式匹配:

Include Patterns: org/apache/**,com/acme/**
Exclude Patterns: com/acme/exp-project/**

a. org/apache/maven/parent/1/1.pom:该制品会在A中定位;

b. com/acme/project-x/core/1.0/nit-1.0.jar:该制品会在A中定位;

c. com/acme/exp-project/core/1.1/san-1.1.jar:该制品不会在A中定位。

(7) Max Unique Snapshots:在同一个artifact下,仓库存储的不同snapshots的最大个数,当达到该数量时,使用先进先出算法删除老的制品。该值默认为0,即不限制;

(8) Handle Releases::该开关决定当前仓库是否允许部署release版本的制品;

(9) Handle Snapshots:该开关决定当前仓库是否允许部署snapshot版本的制品;

2. 通用高级配置

(1) Priority Resolution

该选项用于提升当前仓库在制品查询解析时的优先级,建议对本地库开启该选项。

(2) Blacked out

可以理解为下线或禁用,开启后该仓库将不可查询、部署和解析制品。

(3) Allow content browsing

允许浏览内容选项,选中后Artifactory将会允许用户浏览内部归档文件的内容,比如浏览JavaDoc的内容。

(4) Enable CDN Download

CDN加速,仅在商用版支持。

三、逻辑仓库

1. 本地仓库

(1) 可以通过以下URL访问存储在本地仓库的制品:

http://<host>:<port>/artifactory/<local-repository-name>/<artifact-path>

(2) 配置 --- Checksum Policy

Checksum是针对二进制文件生成的字符串,用于确保该文件的完整性。

Checksum Policy是当用户提交的制品没有Checksum或Checksum校验失败后的行为,它有两个选项:

a. Verify against client checksums (默认):如果Checksum不合法,则访问制品的checksum接口返回404错误,如果Checksum与本地生成的Checksum不匹配,则访问制品的checksum接口返回409错误;

b. Trust server generated checksums:Artifactory不再校验用户上传的checksum,Artifactory会使用自己计算的checksum并信任该值。

(3) 配置 --- Maven Snapshot Version Behavior

Maven Snapshot版本行为,有三个选项:

a. Unique:全局唯一,推荐选择;

b. Nonunique:非唯一的,使用固定格式“artifactID-version-SNAPSHOT.type”;

c. Deployer:使用用户上传时指定的版本号。

(4) 配置 --- Suppress POM Consistency

该选项用于跳过POM的一致性检查,不建议勾选。

用户上传制品后,Artifactory会对比POM文件中的groupId:artifactId:version和实际的部署路径,如果不一致则拒绝部署。

2. 远程仓库

(1) 可以通过以下URL访问存储在远程库中的制品:

http://<host>:<port>/artifactory/<remote-repository-name>/<artifact-path>

如果制品尚未缓存,那么请求该URL将使Artifactory首先请求远程的制品(可能位于中央库),并将制品缓存在本地(注意不是本地库)。

(2) 直接访问远程库的本地缓存

http://<host>:<port>/artifactory/<remote-repository-name>-cache/<artifact-path>

(3) 配置 --- URL

远程库的URL,比如:

a. Maven的阿里云镜像:https://maven.aliyun.com/repository/central

b. Maven中央库:https://repo1.maven.org/maven2/

(4) 配置 --- Offline

离线选项,如果选中则将不再尝试从当前远程库下载制品。

(5) 配置 --- Checksum Policy

不同于本地库的Checksum Policy,远程库的策略如下:

a. Generate if absent(默认):如果远程制品没有checksum,则Artifactory将为其生成checksum并信任该checksum;如果远程制品的checksum与Artifactory生成的checksum不匹配,则拒绝下载远程制品;

b. Fail:如果远程制品没有checksum或者与本地生成的checksum不匹配,则拒绝;

c. Ignore and generate:忽略远程制品携带的checksum值,使用Artifactory生成的checksum代替;

d. Ignore and Pass-thru:与c相比,如果远程制品携带了checksum值,则信任之。

(6) 配置 --- Eagerly Fetch Jars

尽早请求Jar选项,在选中状态下,Artifactory将会在查询本地缓存时并发的请求远程制品。此选项会加速第一次请求的进程。

(7) 配置 --- Eagerly Fetch Sources

与Eagerly Fetch Jars类似。

3. 虚拟仓库

(1) 制品解析顺序

对于虚拟仓库的查询请求,Artifactory将遵循以下解析顺序:

a. Local repositories

b. Remote repository caches

c. Remote repositories themselves

如果其中一种类型的仓库存在多个,则按照它们在Selected Repositories中的顺序进行解析。

(2) 配置 --- Selected Repositories

将当前虚拟库需要路由的仓库从左侧的可用库列表添加到右侧的选中仓库列表。

(3) 配置 --- Default Deployment Repository

选择本地库作为默认的部署仓库。

4. 最佳实践

(1) 对外公开的制品库与内部专用的制品库严格分开;

(2) 使用Exclude Pattern阻止内部仓库暴露:

a. 配置虚拟仓库,代理所有的远程仓库访问;

b. 在虚拟仓库中配置Exclude Pattern,排除对本地仓库的访问;

(3) 通过Include Pattern提高内部制品查询性能:

a. 对本地库,配置Include Pattern仅包含当前仓库所存储的制品。

(4) 使用虚拟仓库

a. 创建虚拟仓库,聚合对本地仓库和远程仓库的访问;

四、参考

1. 官方

https://jfrog.com/help/r/jfrog-artifactory-documentation/repository-management

https://jfrog.com/help/r/jfrog-artifactory-documentation/virtual-repositories

https://jfrog.com/help/r/jfrog-artifactory-documentation/local-repositories

https://jfrog.com/help/r/jfrog-artifactory-documentation/remote-repositories

https://jfrog.com/help/r/jfrog-artifactory-documentation/maven-repository

https://jfrog.com/whitepaper/best-practices-structuring-naming-artifactory-repositories/

2. 其他

https://blog.csdn.net/qq_41187116/article/details/125952760

标签:JFrog,制品,仓库,checksum,远程,---,Artifactory
From: https://www.cnblogs.com/eagle6688/p/17224573.html

相关文章

  • MYSQL--列子中表的截图
      ......
  • 子组件中修改父组件v-model传过来的值
    child.vueexportdefault{props:{value:{type:String,default:''},},model:{ prop:'value', event:'change'}methods:{//value数据改变触发的方法......
  • MYSQL--第五和第六章笔记
    #按照函数的定义,可分为内置函数和自定义函数,自定义函数后面再写。内置函数就现成的函数。#不同的数据库之间DBMS函数差别很大!移植性比较差#按照实现的功能角度,mysql的内置函数可分:数值函数、字符串函数、日期和时间函数、#流程控制函数、加密与解密函数、获取mysql信息函数、......
  • MYSQL--第七和第八章笔记
    #SQL的分类:#1、DDL:数据定义语言:CREATE\ALTER\DROP\RENAME\TRUNCATE#2、DML:数据操作语言:INSERT\DELETE\UPDATE\SELECT#3、DCL:数据控制语言:COMMIT\ROLLBACK\SAVEPOINT\GRANT\REVOKE--子查询:是指一个查询语句嵌套在另一个查询语句的查询,提高SELECT的查询能力SELE......
  • MYSQL--第九和第十章笔记
    #数据的增删改#DML的INSERT添加数据:使用insert语句向表添加数据CREATETABLEIFNOTEXISTSdemo1.use1(nameVARCHAR(10),ageINT);DESCdemo1.use1;/*#方式一:一条一条的添加数据未指明每个字段所对应的数据类型时:(不推荐) INSERTINTO数据库名.表名VALUES(数据1,数据2,数据......
  • MYSQL--存储过程和视图笔记
    #存储过程:一组经过预先编译的SQL语句的封装#视图主要针对的是查询操作,存储过程可以是更为复杂的SQL语句,比如增删改#存储过程没有返回值。#存储过程的参数类型可以是IN、OUT和NOUT,可以分为:#1、没有参数(无参数无返回)#2、仅仅带IN类型(有参数无返回)#3、仅仅带OUT类型(无参数......
  • 20230510-20230517
    _今天和老万谈了很久啊。真的,或许我已经做出选择了。或许真的很艰难。或许吧。放弃很难,但坚持更难。归于平凡,归于平淡。我到底是什么样的人呢,要做出什么样的选择。“纯粹的享受这段时光”“每分每秒都是开心的”一时间还不知道跟谁宣布。真的。也不知道怎么面对大家......
  • BGP-capability dynamic
     setprotocolsbgp<asn>neighbor<address|interface>address-family<ipv4-unicast|ipv6-unicast>soft-reconfigurationinboundChangesinBGPpoliciesrequiretheBGPsessiontobecleared.Clearinghasalargenegativeimpactonnetwork......
  • 拓扑排序 - TopoSort
    拓扑排序-TopoSort前言wcy终于考上了心仪的大学,开启了精彩的大学生活!然而光是选课这一件事就把他难住了,因为一些课程包含先修课程:课程编号课程名称先修课程C1高等数学无C2程序设计基础无C3离散数学C1,C2C4数据结构C2,C3C5算法语言C2C6......
  • 第9周-elk-k8s网络
    一、日志收集案例-容器内置日志收集收集架构应用程序以tomcat为例1构建镜像DockerfileFROMharbor.jackedu.net/baseimage/tomcat-base:v8.5.43ADDcatalina.sh/apps/tomcat/bin/catalina.shADDserver.xml/apps/tomcat/conf/server.xml#ADDmyapp/*/data/tomcat/we......