From 9b6f2cccf2992d7dbf96e0a6c9adda1495eb2e38 Mon Sep 17 00:00:00 2001 From: hexiang Date: Tue, 6 Dec 2022 16:28:51 +0800 Subject: [PATCH] add nexus3 --- README.md | 2 + nexus3/maven/README.md | 42 +++++++ nexus3/maven/repository/enhanceMavenImport.sh | 111 ++++++++++++++++++ nexus3/npm/README.md | 75 ++++++++++++ nexus3/npm/npm-uploadbatch.sh | 14 +++ 5 files changed, 244 insertions(+) create mode 100644 nexus3/maven/README.md create mode 100644 nexus3/maven/repository/enhanceMavenImport.sh create mode 100644 nexus3/npm/README.md create mode 100644 nexus3/npm/npm-uploadbatch.sh diff --git a/README.md b/README.md index a48731f..3b80380 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ stream { # Docker for Linux +> Linux安装docker服务 +> > ⚠ **以下所有操作均以root管理员身份操作!** ## 离线安装 diff --git a/nexus3/maven/README.md b/nexus3/maven/README.md new file mode 100644 index 0000000..10b9f3e --- /dev/null +++ b/nexus3/maven/README.md @@ -0,0 +1,42 @@ +# 批量上传maven依赖到私服脚本操作 + +repository文件夹下有 + +- 需上传的maven依赖包 +- enhanceMavenImport.sh + +⚠脚本需要与需上传的maven依赖包在同一个文件夹下! + +## windows上传 + +❗前提:安装好了git,这里不再赘述安装! + +进入repository文件夹,右键选择`git bash here`,在窗口输入以下命令: + +```shell +sh enhanceMavenImport.sh -u -p -r +``` + +``:你nexus私服的用户名(一般都是admin管理员) + +``:你nexus私服的密码(一般都是admin管理员账号对应的密码) + +``:你maven私服(hosted)的地址 + +示例: + +```shell +sh enhanceMavenImport.sh -u admin -p 1234 -r http://10.58.20.199:8081/repository/maven_hosted/ +``` + +## linux上传 + +- 把repository文件夹下的所有内容上传到Linux服务器 + +- cd 到repository文件夹目录下 +- 输入以下命令运行脚本(同理更改为你的私服信息) + +```shell +sh enhanceMavenImport.sh -u -p -r +``` + diff --git a/nexus3/maven/repository/enhanceMavenImport.sh b/nexus3/maven/repository/enhanceMavenImport.sh new file mode 100644 index 0000000..b548b5a --- /dev/null +++ b/nexus3/maven/repository/enhanceMavenImport.sh @@ -0,0 +1,111 @@ +#!/bin/bash +# author: LinRuChang +# date: 2022-07-27 04:15:00 +# desc: nexus上传脚本 +# use +# 第一种:sh enhanceMavenImport.sh -l 本地仓库目录绝对路径 -u nexus账号 -p nexus密码 -r 远程私库的URL地址 +# sh enhanceMavenImport.sh绝对路径 -l /www/server/maven/repository2 -u admin -p admin123 -r http://192.168.19.107:8082/repository/lrc +# +# 第二种:将此脚本放入本地仓库目录里面,然后执行即可- 【切记本地仓库目录与脚本的路径关系的是父子关系,非孙子辈等关系】 +# sh enhanceMavenImport.sh绝对路径 -u nexus账号 -p nexus密码 -r 远程私库的URL地址 + + +if [[ $1 == 'help' || $1 == '--help' ]]; then + echo "用法: sh $(readlink -f $0) -l 本地仓库绝对路径 -u nexus账号 -p nexus密码 -r 远程仓库URL地址 " + exit 0 +fi + + +while getopts ":l:r:u:p:" opt; do + case $opt in + l) LOCAL_REP_DIR="$OPTARG" + ;; + r) REPO_URL="$OPTARG" + ;; + u) USERNAME="$OPTARG" + ;; + p) PASSWORD="$OPTARG" + ;; + esac +done + +# 如果不传-l本地仓库路径,则以当前脚本所在的目录的本地仓库路径 +if [[ -z ${LOCAL_REP_DIR} ]]; then + #LOCAL_REP_DIR=$(pwd) + LOCAL_REP_DIR=$(readlink -f $0 | xargs dirname) +fi + + +echo "================入参=============================" +LOCAL_REP_DIR=$( ( echo ${LOCAL_REP_DIR} | grep '.*\(/\)$' &>/dev/null ) && echo ${LOCAL_REP_DIR} || echo ${LOCAL_REP_DIR}'/' ) +echo "待上传的本地仓库地址:${LOCAL_REP_DIR}" +echo "Nexus账号:${USERNAME}" +echo "Nexus密码:${PASSWORD}" +REPO_URL=$( ( echo ${REPO_URL} | grep '.*\(/\)$' &>/dev/null ) && echo ${REPO_URL} || echo ${REPO_URL}'/' ) +echo "远程仓库URL地址:${REPO_URL}" +echo "=============================================" + + +if [[ ${USERNAME} && ${PASSWORD} && ${REPO_URL} && -d ${LOCAL_REP_DIR} ]]; then + echo "入参非空校验通过!!!" +else + echo "错误:可能Nexus的账号u、密码p、远程仓库地址r信息有缺失,或者本地仓库目录l不存在,请检查" + echo "用法: sh $(readlink -f $0) -l 本地仓库绝对路径 -u nexus账号 -p nexus密码 -r 远程仓库URL地址 " + exit 1; +fi + + +echo -e "\n================检测远程目录地址网络连通性, 请耐心等待=============================" +if [[ $(curl -X PUT -w '%{http_code}' ${REPO_URL} 2>/dev/null) == '401' ]]; then + echo "远程仓库【${REPO_URL}】访问通" +else + echo "错误:远程仓库【${REPO_URL}】访问不通, 请检查" + exit 1; +fi + + + +echo -e "\n================待上传文件列表展示=============================" +# 进入本地仓库,开始检索待上传的文件 +cd ${LOCAL_REP_DIR} +# 1. 排除脚本本身、以及含archetype-catalog、maven-metadata-deployment、maven-metadata-deployment字符路径的文件 +# 2. 最终筛选出的文件剃掉前面的./字符 +# 3. 开始一个一个文件调用curl上传 + +# 特殊字符/添加上转义字符变为 \/ +LOCAL_REP_DIR_ESCAPE=$(echo "${LOCAL_REP_DIR}" | sed 's/\//\\\//g') +# 当前目录待上传的文件 +findUploadFiles=$(find . -type f -not -path "./$0" -not -name '*.sh' -not -regex "\(.*archetype-catalog.*\|.*maven-metadata-deployment.*\)\|.*maven-metadata-local.*") +findUploadFilesCount=$(echo "${findUploadFiles}" | sed '/^s*$/d' | wc -l) +if [ ${findUploadFilesCount} -gt 0 ]; then + #uploadFiles=$(find . -type f -not -path "./$0" -not -name '*.sh' -not -regex "\(.*archetype-catalog.*\|.*maven-metadata-deployment.*\)\|.*maven-metadata-local.*" | sed "s|^\./||") + uploadFiles=$( echo -e "${findUploadFiles}" | sed "s|^\./||") +fi + + +echo "$( [ ${findUploadFilesCount} -gt 0 ] && ( echo "${uploadFiles}" | sed 's/^/'"${LOCAL_REP_DIR_ESCAPE}"'&/g') || echo '' )" +echo "文件个数:${findUploadFilesCount}" +if [ ${findUploadFilesCount} -eq 0 ]; then + echo -e "\n本地仓库无可上传的文件,脚本结束" + exit 0 +fi + + +while [ true ]; do + echo -e '\n请检查上述文件路径是否是你需要上传的?【确定上传按y、取消上传按n】' + read ensureUpload + if [ $ensureUpload ] && [ $(echo $ensureUpload | tr [a-z] [A-Z]) == "Y" ]; then + echo -e "\n================已上传文件列表展示=============================" + currentUploadedCount=0 + #echo "${uploadFiles}" | sed "s|^\./||" | xargs -I '{}' sh -c 'echo 已上传文件: '"${LOCAL_REP_DIR}"'{};echo "========="' + echo "${uploadFiles}" | sed "s|^\./||" | xargs -I '{}' sh -c "curl -u '$USERNAME:$PASSWORD' -X PUT -v -T {} ${REPO_URL}/{} &>/dev/null ; echo '已上传文件: ${LOCAL_REP_DIR}{}'" + echo '本地仓库文件上传结束,脚本结束' + break + elif [ $ensureUpload ] && [ $(echo $ensureUpload | tr [a-z] [A-Z]) == "N" ]; then + echo "取消上传本地仓库文件,脚本结束" + break + else + echo -e "错误:[${ensureUpload}]非法字符,请根据提示输入对应的内容" + + fi +done diff --git a/nexus3/npm/README.md b/nexus3/npm/README.md new file mode 100644 index 0000000..4f11e4e --- /dev/null +++ b/nexus3/npm/README.md @@ -0,0 +1,75 @@ + + +# 批量上传npm依赖到私服脚本操作 + +当前文件夹下有 + +- tgz文件夹(**里面存放要上传的.tgz包**) +- npm-uploadbatch.sh + +⚠下载到本地后,莫修改当前文件下的相对路径以及文件夹名! + +## 修改脚本配置信息 + +```shell +#!/bin/bash +targetDir=./tgz +publishRestful=http:///service/rest/v1/components?repository= +echo ">>> 文件所在目录:$targetDir <<<" +dir=$(ls -l $targetDir | awk '/.tgz$/ {print $NF}') +cd $targetDir + +for file in $dir +do + echo ">>> $targetDir/$file 上传开始 \n" + ret=`curl -u : -X POST "$publishRestful" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"` + echo $ret + echo ">>> $targetDir/$file 上传完成 \n" +done +``` + +- ``:你nexus私服的IP:端口 +- ``:你nexus私服的npm(hosted)仓库名 +- ``:你nexus私服的用户名(一般为admin管理员) +- ``:你nexus私服的密码(一般为admin管理员对应的密码) + +示例: + +```shell +#!/bin/bash +targetDir=./tgz +publishRestful=http://10.58.20.199:8081/service/rest/v1/components?repository=npm_hosted +echo ">>> 文件所在目录:$targetDir <<<" +dir=$(ls -l $targetDir | awk '/.tgz$/ {print $NF}') +cd $targetDir + +for file in $dir +do + echo ">>> $targetDir/$file 上传开始 \n" + ret=`curl -u admin:1234 -X POST "$publishRestful" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"` + echo $ret + echo ">>> $targetDir/$file 上传完成 \n" +done +``` + +## windows上传 + +❗前提:安装好了git,这里不再赘述安装! + +在当前文件夹下,右键选择`git bash here`,在窗口输入以下命令: + +```shell +./npm-uploadbatch.sh +``` + +## linux上传 + +- 把npm文件夹下的所有内容上传到Linux服务器 + +- cd 到npm文件夹目录下 +- 输入以下命令运行脚本(同理运行脚本前,将脚本里面的配置信息更改为你的私服信息) + +```shell +./npm-uploadbatch.sh +``` + diff --git a/nexus3/npm/npm-uploadbatch.sh b/nexus3/npm/npm-uploadbatch.sh new file mode 100644 index 0000000..4b8741c --- /dev/null +++ b/nexus3/npm/npm-uploadbatch.sh @@ -0,0 +1,14 @@ +#!/bin/bash +targetDir=./tgz +publishRestful=http://10.58.20.199:8081/service/rest/v1/components?repository=npm_hosted +echo ">>> 文件所在目录:$targetDir <<<" +dir=$(ls -l $targetDir | awk '/.tgz$/ {print $NF}') +cd $targetDir + +for file in $dir +do + echo ">>> $targetDir/$file 上传开始 \n" + ret=`curl -u admin:1234.abcde -X POST "$publishRestful" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@$file;type=application/x-compressed"` + echo $ret + echo ">>> $targetDir/$file 上传完成 \n" +done \ No newline at end of file -- GitLab