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

相关文章

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者