Devops——制品仓库构建

2023-12-11 02:20
文章标签 构建 仓库 devops 制品

本文主要是介绍Devops——制品仓库构建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

根据官方介绍JFrogArtifactory是目前全球唯一一个支持所有开发语言,任意维度的元数据检索、跨语言正反向解析,并拥有深度递归、支持多活异地灾备的企业级、高可用二进制制品管理仓库。这里的二进制制品是指构建过程的输出物,包括软件包、测试报告,应用配置文件等可在服务器上直接运行或可查看的二进制软件制品。

JFrog Artifactory支持多种仓库类型,除了Docker镜像仓库外还支持Maven、Npm等其他类型的仓库。在正式企业级环境中镜像仓库的部署要考虑高可用、扩展性等要求,关于这方面的部署方式可以参考其他官方文档。

一、docker 中单JFrog Artifactory服务的构建

1.1 拉取JFrog Artifactory社区版Docker镜像

# 查看images
docker search JFrog# 拉取镜像
docker pull dzaunerepos/jfrog-artifactory-pro(收费版本)拉取排名最高的镜像(注意这个是付费版,有oss后缀的才是社区版,社区版的镜像下载比较慢,需要考虑科学上网)

docker pull docker.bintray.io/jfrog/artifactory-oss(免费版本)

1.2 创建JFrog Artifactory 数据卷

#创建数据目录
$ mkdir -p /home/mystic/jialexiong/dockerdata/JFrog/data_artifactory/artifactory6_data#赋予权限
chmod 777 /home/mystic/jialexiong/dockerdata/JFrog/data_artifactory/artifactory6_data

1.3 运行JFrog Artifactory 容器

# 如果是付费版用这行命令
docker run --rm --name artifactory -d -v /home/mystic/jialexiong/dockerdata/JFrog/data_artifactory/artifactory6_data:/var/opt/jfrog/artifactory -p 8081:8081 scandio/jfrog-artifactory
# 如果是社区版请用这行命令,暴露多个端口
docker run --name jfrog-oss -d -v /home/mystic/jialexiong/dockerdata/JFrog/data_artifactory/artifactory6_data:/var/opt/jfrog/artifactory -p 8081:8081 -p 8082:8082 -p 8046:8046 -p 8049:8049 -p 8070:8070 docker.bintray.io/jfrog/artifactory-oss

完成上述操作后,如果容器运行成功,此时浏览器输入访问地址:http://127.0.0.1:8081,将会显示如图所示界面:

输入初始密码(admin/password)后,会继续跳转到管理员密码重置界面,如图所示:

依据步骤设置好管理员密码。之后会继续要求设置如订阅邮箱、访问网站域名、代理配置等信息,这里可以暂时忽略直接跳到仓库创建的页面,如图所示:

从上图可以看到JFrogArtifactory支持多种类型的仓库,例如Maven私有仓库也可以通过JFrog Artifactory来进行配置,由于是社区版所以很多其他类型的仓库并未免费开放!这里我们只选择创建Docker镜像仓库,创建后效果如图所示:

如上图所示,默认创建了一个RepositoryKey为docker-local的本地仓库。在实际工作场景中为了便于Docker镜像的管理,可以分别为同一代码空间的项目创建单独的镜像仓库,例如我们本书中所有的Spring Cloud实战项目创建一个单独镜像仓库,点击右上角“New LocalRepository”,如图所示:

到这里JFrog Repository容器镜像仓库的基本部署工作就完成了。 

二、docker中多JFrog Artifactory集群的构建

三、源码中JFrog Artifactory集群的构建

3.1 源文件安装

PS G:\artifactory-pro-6.6.0> java -jar .\artifactory-injector-1.1.jar
What do you want to do?
1 - generate License String
2 - inject artifactory
exit - exit
2
where is artifactory home? ("back" for back)
G:\artifactory-pro-6.6.0/
artifactory detected. continue? (yes/no)
yes
putting another WEB-INF/lib/artifactory-addons-manager-6.6.0.jar
META-INF/
org/
org/jfrog/
com/
com/jfrog/
com/jfrog/bintray/
com/jfrog/bintray/pro/
com/jfrog/bintray/pro/client/
com/jfrog/bintray/pro/client/api/
com/jfrog/bintray/pro/client/api/model/
com/jfrog/bintray/pro/client/api/a/
com/jfrog/bintray/pro/client/api/b/
com/jfrog/bintray/pro/client/api/handle/
com/jfrog/bintray/pro/client/api/model/AttachDetachLicenseModel$LicenseActivationStatus.class
com/jfrog/bintray/pro/client/api/model/ActivationKeyValidationResult.class
com/jfrog/bintray/pro/client/api/model/AttachDetachLicenseModel.class
com/jfrog/bintray/pro/client/api/model/LicenseActivationKey.class
com/jfrog/bintray/pro/client/api/a/a.class
com/jfrog/bintray/pro/client/api/a/b$a.class
com/jfrog/bintray/pro/client/api/a/b.class
com/jfrog/bintray/pro/client/api/b/a.class
com/jfrog/bintray/pro/client/api/b.class
com/jfrog/bintray/pro/client/api/a.class
com/jfrog/bintray/pro/client/api/handle/b.class
com/jfrog/bintray/pro/client/api/handle/SignedLicenseActivationKey.class
com/jfrog/bintray/pro/client/api/handle/d.class
com/jfrog/bintray/pro/client/api/handle/c.class
com/jfrog/bintray/pro/client/api/handle/f.class
com/jfrog/bintray/pro/client/api/handle/g.class
com/jfrog/bintray/pro/client/api/handle/LicenseActivationKeyData.class
com/jfrog/bintray/pro/client/api/handle/e.class
com/jfrog/bintray/pro/client/api/handle/a.class
META-INF/MANIFEST.MF
org/artifactory/
org/artifactory/addon/
org/artifactory/addon/a/
org/artifactory/addon/PeriodicReportModel.class
org/artifactory/addon/ConverterBlockerImpl.class
org/artifactory/addon/OnlineLicenseValidationServiceImpl$1.class
org/artifactory/addon/c.class
org/artifactory/addon/LicenseStatus.class
org/artifactory/addon/a/a.class
org/artifactory/addon/AddonsManagerImpl$1.class
org/artifactory/addon/LicenseManagerHelper.class
org/artifactory/addon/e.class
org/artifactory/addon/OnlineLicenseValidationServiceImpl.class
org/artifactory/addon/ArtifactoryLicensePool.class
org/artifactory/addon/ArtifactoryLicenseVerifier.class
org/artifactory/addon/b.class
org/artifactory/addon/OnlineLicenseValidationService.class
org/artifactory/addon/AddonsManagerImpl.class
org/artifactory/addon/a.class
org/artifactory/addon/d.class
org/artifactory/addon/LicenseHolder.class
org/artifactory/addon/PeriodicJobUtil.class
org/artifactory/addon/LicenseProvider.class
META-INF/maven/
Injecting org/jfrog/license/
Injecting org/jfrog/license/legacy/
Injecting org/jfrog/license/legacy/License$Type.class
Injecting org/jfrog/license/legacy/License.class
Injecting org/jfrog/license/api/
Injecting org/jfrog/license/api/a.class
Injecting org/jfrog/license/multiplatform/
Injecting org/jfrog/license/multiplatform/a.class
Injecting org/jfrog/license/a/
Injecting org/jfrog/license/a/a.class
Injecting org/jfrog/license/legacy/SignedLicense.class
Injecting org/jfrog/license/multiplatform/b$1.class
Injecting org/jfrog/license/api/License.class
Injecting org/jfrog/license/api/Product$Type.class
Injecting org/jfrog/license/multiplatform/b.class
Injecting org/jfrog/license/api/Product.class
Injecting org/jfrog/license/multiplatform/License.class
Injecting org/jfrog/license/exception/
Injecting org/jfrog/license/exception/LicenseException.class
Injecting org/jfrog/license/multiplatform/SignedLicense.class
Injecting org/jfrog/license/exception/LicenseRuntimeException.class
Injecting org/jfrog/license/multiplatform/SignedProduct.class
Injecting org/jfrog/license/legacy/JsonLicenseSerializer$1.class
Injecting org/jfrog/license/legacy/b.class
Injecting org/jfrog/license/legacy/JsonLicenseSerializer.class
DONE!
What do you want to do?
1 - generate License String
2 - inject artifactory
exit - exit
1
eyJhcnRpZmFjdG9yeSI6eyJpZCI6IiIsIm*************InZhbGlkRnJvbSI6MTYxNzY3NDgzNTg1MCwiZXhwaXJlcyI6NDc3MzM3NzIzNT**************************yaWFsIjpmYWxzZSwicHJvcGVydGllcyI6e319fQ== (这里打码处理了)

注意:​ 这个是激活码,一定要记下来,等会要用

eyJhcnRpZmFjdG9yeSI6eyJpZCI6IiIsIm*************InZhbGlkRnJvbSI6MTYxNzY3NDgzNTg1MCwiZXhwaXJlcyI6NDc3MzM3NzIzNT**************************yaWFsIjpmYWxzZSwicHJvcGVydGllcyI6e319fQ== (这里打码处理了)

3.2 运行artifactory

找到G:\artifactory-pro-6.6.0\bin目录下的artifactory.bat执行文件来执行。artifactory服务默认的端口号是8081,直接使用浏览器打开localhost:8081就可以进入artifactory的页面。

3.3 设置仓库

Jfroge的artifactory 是一款Maven仓库服务端软件,可以用来在内网搭建maven仓库,供公司内部公共库的上传和发布,以提供公共代码使用的便利性。
Artifactory的仓库主要分三类:local、remote、virtual

  • 本地私有仓库(local):用于内部使用,上传的组件不会向外部进行同步;
  • 远程仓库(remote):用于代理及缓存公共仓库,不能向此类型的仓库上传私有组件;
  • 虚拟仓库(virtual):不是真实在存储上的仓库,用于组织本地仓库和远程仓库

3.3.1 设置远程仓库

找到阿里云的镜像地址

https://maven.aliyun.com/mvn/guide

3.3.2 设置本地仓库

3.3.3 设置虚拟仓库

四、源码中多JFrog Artifactory集群的构建

博文参考

这篇关于Devops——制品仓库构建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479120

相关文章

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

Maven 依赖发布与仓库治理的过程解析

《Maven依赖发布与仓库治理的过程解析》:本文主要介绍Maven依赖发布与仓库治理的过程解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录Maven 依赖发布与仓库治理引言第一章:distributionManagement配置的工程化实践1

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St