nexus3 npm-hosted仓库迁移

这篇具有很好参考价值的文章主要介绍了nexus3 npm-hosted仓库迁移。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

迁移背景:

从nexus 3.33 升级到 nexus 3.64 过程中,私服 npm-hosted 无法上传。由于这个 npm-hosted 和 npm-proxy 放的同一个 blob存储,无法单独拆除去,所以采用迁移的方式

迁移思路:

down下来 npm-hosted 仓库,然后 批量上传

技术栈:

python shell 正则

down仓库的python文件:

import os
import re
import requests
from urllib.parse import unquote

def decode_urls(url_list):
    decoded_urls = [unquote(url) for url in url_list]
    return decoded_urls

def download_url(url, save_dir):
    response = requests.get(url)

    # 检查响应状态码
    if response.status_code == 200:
        # 获取URL的基本路径
        base_url = '/'.join(url.split('/')[:-1])

        # 解析HTML内容
        html_content = response.text

        # 搜索所有链接
        links = find_links(html_content)
        # 遍历链接
        for link in links:
            file_url = base_url +"/"+ link


            # 检查链接是否为目录
            if link.endswith('/'):

                # 创建本地目录
                save_subdir = os.path.join(save_dir, link)
                os.makedirs(save_subdir, exist_ok=True)

                # 递归下载子目录
                download_url(file_url, save_subdir)
            else:
                # 下载文件
                save_file = link.split("/")[-1]
                download_file(link, save_dir+save_file)
    else:
        print(f"Failed to download URL: {url}")


def find_links(html_content):
    # 使用正则表达式或HTML解析库解析HTML内容,提取所有链接
    # 例如,可以使用正则表达式 r'<a\s+href=[\'"](.*?)[\'"]\s*>' 来提取链接
    # 返回一个包含所有链接的列表
    # 使用正则表达式匹配链接
    pattern = r'<a\s+href=[\'"](.*?)[\'"]\s*>'
    matches = re.findall(pattern, html_content)
    matches = decode_urls(matches)
    if '../' in matches:
        matches.remove('../')
    print(matches)

    # 返回匹配到的链接列表
    return matches


def download_file(url, save_path):
    response = requests.get(url, stream=True)

    # 检查响应状态码
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
    else:
        print(f"Failed to download file: {url}")


# 指定下载URL和保存目录
url = "https://mirrors.xinyunkeji.com/service/rest/repository/browse/npm-test-hosted/"
save_dir = '/opt/npm/download'

# 创建保存目录(如果不存在)
os.makedirs(save_dir, exist_ok=True)

# 开始下载
download_url(url, save_dir)

批量上传新仓库shell文件:

这个curl语句是从api接口里面,模拟上传一个文件,然后再下方获取的curl命令
nexus3 npm-hosted仓库迁移,npm,前端,node.js文章来源地址https://www.toymoban.com/news/detail-811327.html

#!/bin/bash
#需要上传到的仓库url
url='https://mirrors.xinyunkeji.com/service/rest/v1/components?repository=npm-test-hosted2'
#使用python下载的仓库目录
directory='/opt/npm/download'
#nexus有上传权限的账户密码
username='test'
password='mimaya'

for file in $(find $directory -name "*.tgz"); do
  echo "准备上传${file}文件"
  curl -X POST $url \
    -H 'accept: application/json' \
    -H 'NX-ANTI-CSRF-TOKEN: 0.05104117117544127' \
    -H 'X-Nexus-UI: true' \
    -F "npm.asset=@$file;type=application/x-compressed" \
    -u "$username:$password"
done

到了这里,关于nexus3 npm-hosted仓库迁移的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Maven配置Nexus3使用

    Maven配置Nexus3使用

    接上一篇 Nexus安装:https://www.cnblogs.com/huzccc/p/17773901.html 仓库类型 说明 proxy 代理到远程仓库,默认国外,可以修改为国内阿里云代理 group 存放:通过 Nexus 获取的第三方 jar 包 hosted 存放:本团队其他开发人员部署到 Nexus 的 jar 包 还有一些仓库名称: 仓库名称 说明 maven-cent

    2024年02月08日
    浏览(8)
  • Nexus3 重置 admin 账号密码

    nexus3 的 admin 账号密码忘记了,需要重置。 参考: https://support.sonatype.com/hc/en-us/articles/213467158-How-to-reset-a-forgotten-admin-password-in-Nexus-3-x 由于 nexus 是基于 docker 部署,后面我们需要进入容器中执行相关命令,所以此处不能直接使用 docker stop xxx 来关闭服务。需要进入到容器内部

    2024年02月08日
    浏览(23)
  • Nexus3中搭建Docker私服

    Nexus3中搭建Docker私服

    仓库类型 hosted 本地存储,像官方仓库一样提供本地私库功能 proxy 提供代理其他仓库的类型 group 组类型,可以组合多个仓库为一个地址提供服务 1.1. 安装Nexus3 1.2. 创建用户 创建docker管理的用户:如:docker/docker 1.3. 创建Blob Stores 创建一个名称为docker的BlobStores 1.4. 创建Docker仓库

    2024年01月17日
    浏览(9)
  • docker搭建maven私库Nexus3

    docker搭建maven私库Nexus3

    什么是Maven私服? Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。 当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是

    2024年02月04日
    浏览(9)
  • Docker 安装 Nexus3及使用方法

    Docker 安装 Nexus3及使用方法

    1.1 创建目录 在硬盘上创建 Nexus3 的主目录: 为该目录添加权限: 1.2 拉取镜像 搜索镜像: 拉取镜像: 效果: 1.3 运行容器 镜像拉取完毕后,便可运行容器,这里映射了 nexus-data 目录到上面创建的目录和三个端口。三个端口分别是: 创建启动脚本 脚本内容: 保存 给 startNex

    2024年02月08日
    浏览(11)
  • 手把手教你Linux部署Nexus3私服

    手把手教你Linux部署Nexus3私服

    对maven来说仓库分为两类:本地仓库和远程仓库,有三种专门的Maven仓库管理软件可以用来帮助我们建立私服:chiva、Artifactory和Nexus。Nexus是当前最流行的Maven仓库管理软件。Nexus包含了各种类型的仓库的概念,包括代理仓库、宿主仓库、仓库组等。每一种仓库都提供了丰富实用

    2024年02月19日
    浏览(17)
  • 快速解决 npm 安装 node-sass 速度慢/错误的问题(nexus私服问题见上一篇博客)

    这通常是因为 node-sass 包中包含有本地二进制文件( _binding.node ),而在某些情况下,下载过程可能会失败。 以下是一些可能的解决方法: 1. 使用淘宝镜像 你可以尝试使用淘宝的 cnpm 命令行工具,该工具使用淘宝的镜像源,可以解决部分下载问题。首先,安装 cnpm : 然后使

    2024年02月03日
    浏览(13)
  • 上传前端node_modules依赖包镜像至Nexus

    一、构建项目依赖镜像 1、安装yarn 2、先我们需要设置⼀个⽬录作为我们的“离线镜像”存储,我们可以通过yarn config 命令来实现。 默认在C盘中 C:UsersAdminnpm-packages-offline-cache下,之后会在当前项⽬路径⽣成⼀个npm-packages-offline-cache 文件夹用来存放构建的.tgz离线⽂件 3、移动

    2024年02月20日
    浏览(10)
  • 【云原生】在AWS平台EKS1.25,Helm安装Nexus3.20.1

    使用helm方式安装 工作目录: /opt/eks/yaml/nexus3 添加helm chart源 helm repo add azure http://mirror.azure.cn/kubernetes/charts/ 查询版本 chart的版本和nexus的版本有些差异,准备安装的版本是3.20.1,对应的是chart版本是1.23.1、1.23.0、1.22.0、1.21.4等,这里就安装chart最新的1.23.1版本 拉取chart包 helm

    2024年02月15日
    浏览(13)
  • npm run dev运行出现NODE_OPTIONS=--max_old_space_size=4096 vite --mode dev --host?

    npm run dev运行出现NODE_OPTIONS=--max_old_space_size=4096 vite --mode dev --host?

    PS E:AWorkDataeaseDataEasecorecore-frontend npm run dev dataease@0.0.0 dev NODE_OPTIONS=–max_old_space_size=4096 vite --mode dev --host 0.0.0.0 ‘NODE_OPTIONS’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 遇到 \\\'NODE_OPTIONS\\\' 不是内部或外部命令,也不是可运行的程序或批处理文件。 的问题,

    2024年02月20日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包