当前位置: 首页 > news >正文

Jenkins流水线将制品发布到Nexus存储库

1、安装jenkins(建议别用docker安装,坑太多)

docker run -d -p 8089:8080 -p 10241:50000 -v /var/jenkins_workspace:/var/jenkins_home -v /etc/localtime:/etc/localtime  --name my_jenkins --user=root jenkins/jenkins:2.449

坑1 打开xxx:8080 页面 一直在等待刷新
更换 /var/jenkins_home/hudson.model.UpdateCenter.xml 中的url为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

坑2 安装插件很慢 失败了一大堆

cd /var/jenkins_home/updates
sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

查看登录密码

docker exec -i my_jenkins  cat /var/jenkins_home/secrets/initialAdminPassword

浏览器打开URL

http:///your-ip-addr:8089

2、安装Nexus制品库

docker run -d --name nexus_repo -p 8081:8081 sonatype/nexus3

查看登录密码

docker exec -i nexus_repo cat /nexus-data/admin.password

浏览器登录

http:///your-ip-addr:8081

在Nexus中创建存储库

在这一步中,您将在Nexus中创建一个Maven托管存储库,您的Jenkins将在其中上载“构建”工件。

步骤1:按照以下步骤创建托管存储库,并将其命名 maven-nexus-repo,将在本指南中使用。

从列表中选择 maven2,如下所示:

步骤2:在“ 创建存储库”页面上

  • 输入名称为 maven-nexus-repo

  • 在版本策略中,选择工件的类型。

  • 在“ 托管” 部分 下的“ 部署策略”中,选择“ 允许重新部署”。它将允许您多次部署应用程序。

步骤3:要创建新用户,请转到 信息中心>服务器管理员和配置>用户>创建用户。选择  恰好是默认领域的本地用户类型:

 

在“ 创建用户”页面中

  1. ID:输入所需的ID;在我们的案例中,它是Jenkins用户。

  2. 名字:输入所需的名字;就我们而言,就是Jenkins。

  3. :输入所需的名字;在我们的例子中是用户。

  4. 电子邮件:输入您的电子邮件地址。

  5. 状态:从下拉菜单中选择 有效

  6. 角色:确保将nx-admin 角色授予 用户。

至此,我们完成了Nexus Repository Manager的设置部分。让我们转到Jenkins在此处设置Nexus。

在Jenkins中安装和配置Nexus插件

在这里,您将为Jenkins中的Nexus安装并配置一些插件。为此,请转到Jenkins,然后转到 信息中心>管理Jenkins>管理插件>可用, 然后搜索并安装 Nexus Artifact Uploader 、pipeline-utility-steps这2个插件

在Jenkins中添加Nexus Repository Manager的用户凭据。转到 仪表板>凭证>系统>全局凭证(不受限制),如下所示:

接下来,将Maven安装,手动安装maven

1、进入docker容器,下载安装包

因容器使用的Debian系统,因此更换国内源

# 华为云 Huawei Cloud

sed -i 's@deb.debian.org@repo.huaweicloud.com@g' /etc/apt/sources.list.d/debian.sources

更新工具包

apt-get update
apt-get upgrade

Maven – Download Apache Maven

2、解压并设置变量

unzip apache-maven-3.9.6-bin.zip

#maven
export MAVEN_HOME=/opt/apache-maven-3.9.6
export PATH=$MAVEN_HOME/bin:$PATH

3、配置maven的setting.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <!-- 依赖存储地址-->
  <localRepository>/opt/repo</localRepository>
 
  <!-- 阿里云镜像地址-->
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
 
  <!-- 编译环境-->
  <profiles>
    <profile>
            <id>jdk1.8</id> 
            <activation> 
                    <activeByDefault>true</activeByDefault> 
                    <jdk>1.8</jdk> 
            </activation> 
            <properties> 
                    <maven.compiler.source>1.8</maven.compiler.source> 
                    <maven.compiler.target>1.8</maven.compiler.target>
                    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> 
                    <encoding>UTF-8</encoding> 
            </properties> 
    </profile>
  </profiles>
 
</settings>
 

5、仪表板>管理Jenkins>全局工具配置, 然后找到 Maven

创建一条Jenkins流水线

pipeline {
    agent any
    tools {
        maven "maven"
    }
    environment {
        NEXUS_VERSION = "nexus3"
        NEXUS_PROTOCOL = "http"
        NEXUS_URL = "192.168.50.14:8082"
        NEXUS_REPOSITORY = "maven-nexus-repo"
        NEXUS_CREDENTIAL_ID = "nexus-user"
    }
    stages {
        stage("Clone code from VCS") {
            steps {
                script {
                    git 'https://gitee.com/aminglinux/java-maven-demo.git';
                }
            }
        }
        stage("Maven Build") {
            steps {
                script {
                    sh "mvn package -DskipTests=true"
                }
            }
        }
        stage("Publish to Nexus Repository Manager") {
            steps {
                script {
                    pom = readMavenPom file: "pom.xml";
                    filesByGlob = findFiles(glob: "target/*.${pom.packaging}");
                    echo "${filesByGlob[0].name} ${filesByGlob[0].path} ${filesByGlob[0].directory} ${filesByGlob[0].length} ${filesByGlob[0].lastModified}"
                    artifactPath = filesByGlob[0].path;
                    artifactExists = fileExists artifactPath;
                    if(artifactExists) {
                        echo "*** File: ${artifactPath}, group: ${pom.groupId}, packaging: ${pom.packaging}, version ${pom.version}";
                        nexusArtifactUploader(
                            nexusVersion: NEXUS_VERSION,
                            protocol: NEXUS_PROTOCOL,
                            nexusUrl: NEXUS_URL,
                            groupId: pom.groupId,
                            version: pom.version,
                            repository: NEXUS_REPOSITORY,
                            credentialsId: NEXUS_CREDENTIAL_ID,
                            artifacts: [
                                [artifactId: pom.artifactId,
                                classifier: '',
                                file: artifactPath,
                                type: pom.packaging],
                                [artifactId: pom.artifactId,
                                classifier: '',
                                file: "pom.xml",
                                type: "pom"]
                            ]
                        );
                    } else {
                        error "*** File: ${artifactPath}, could not be found";
                    }
                }
            }
        }
    }
}

让我们逐一分解上述参数:

  • NEXUS_VERSION:在这里,我们必须提及Nexus的确切版本,可以是nexus2nexus3。在我们的情况下,它是的最新版本nexus3

  • NEXUS_PROTOCOL:对于本指南,我们使用了HTTP协议,但是,在正式生产的情况下,您将必须使用HTTPS。

  • NEXUS_URL:添加您的IP地址和端口号,以运行Nexus。确保您添加的Nexus实例详细信息没有提及协议,例如httpshttp

  • NEXUS_CREDENTIAL_ID:输入您先前在Jenkins中创建的用户ID,在本例中为 nexus-user-credentials

  • Git项目:在阶段阶段,我们使用了aminglinux/java-maven-demo

在完成管道设置的过程中,是时候开始Build我们的项目了。转到JenkinsNexus项目作业页面,然后单击立即构建。由于这是您的第一个构建,因此将需要一些时间。

一旦构建成功,在Jenkins控制台输出中,您将看到类似以下内容:

而在Nexus Repository Manager中,您会看到类似以下内容:

相关文章:

Jenkins流水线将制品发布到Nexus存储库

1、安装jenkins&#xff08;建议别用docker安装&#xff0c;坑太多&#xff09; docker run -d -p 8089:8080 -p 10241:50000 -v /var/jenkins_workspace:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my_jenkins --userroot jenkins/jenkins:2.449 坑1 打开x…...

信息学奥赛一本通之MAC端VSCode C++环境配置

前提 安装 Visual Studio CodeVSCode 中安装 C/C扩展确保 Clang 已经安装&#xff08;在终端中输入命令&#xff1a;clang --version 来确认是否安装&#xff09;未安装&#xff0c;在命令行执行xcode-select --install 命令&#xff0c;会自行安装&#xff0c;安装文件有点大…...

MPIKGC:大语言模型改进知识图谱补全

MPIKGC&#xff1a;大语言模型改进知识图谱补全 提出背景MPIKGC框架 论文&#xff1a;https://arxiv.org/pdf/2403.01972.pdf 代码&#xff1a;https://github.com/quqxui/MPIKGC 提出背景 知识图谱就像一个大数据库&#xff0c;里面有很多关于不同事物的信息&#xff0c;这…...

Flutter-自定义图片3D画廊

效果 需求 3D画廊效果 设计内容 StackGestureDetectorTransformPositioned数学三角函数 代码实现 具体代码大概300行 import dart:math;import package:flutter/material.dart; import package:flutter_xy/widgets/xy_app_bar.dart;import ../../r.dart;class ImageSwitc…...

python中如何解析Html

在最近需要的需求中&#xff0c;需要 python 获取网页内容&#xff0c;并从html中获取到想要的内容。这里记录一下两个比较常用的python库对html的解析。 1. BeautifulSoup 它是一个非常流行的python脚本库&#xff0c;用于解析HTML和XML文档。如果你对 java 很熟悉&#xff…...

Hystrix的原理及应用:构建微服务容错体系的利器(一)

本系列文章简介&#xff1a; 本系列文章旨在深入剖析Hystrix的原理及应用&#xff0c;帮助大家理解其如何在微服务容错体系中发挥关键作用。我们将从Hystrix的核心原理出发&#xff0c;探讨其隔离、熔断、降级等机制的实现原理&#xff1b;接着&#xff0c;我们将结合实际应用场…...

win10企业版LTSC可以识别鼠标,无法识别移动硬盘问题

1. USB控制器重置&#xff1a;在设备管理器中&#xff0c;展开"通用串行总线控制器"。右键点击每个USB控制器&#xff0c;选择"卸载设备"。完成后&#xff0c;重新启动计算机。操作系统将自动重新安装USB控制器驱动程序。这可能有助于解决与USB控制器相关的…...

[经验分享]OpenCV显示上一次调用的图片的处理方法

最近在研究OpenCV时发现&#xff0c;重复调用cv::imshow("frame", frame)时&#xff0c;会显示出上一次的图片。 网上搜索了方法&#xff0c;有以下3种因素可能导致&#xff1a; 1. 图像变量未正确更新&#xff1a;可能在更新 frame 变量之前就已经调用了 imshow。…...

NFS性能优化参考 —— 筑梦之路

CentOS 7 NFS服务优化的配置参考—— 筑梦之路_nfs 读取优化-CSDN博客 核心原则是减少客户端与服务端的交互次数&#xff0c;因此我们在访问文件的时候应该尽量保持文件的打开状态&#xff0c;避免重复打开关闭文件&#xff0c;这样NFS全路径的逐级检查。这种方法对NFSv4以后的…...

Vue3学习日记 Day4 —— pnpm,Eslint

注&#xff1a;此课程需要有Git的基础才能学习 一、pnpm包管理工具 1、使用原因 1.1、速度快&#xff0c;远胜过yarn和npm 1.2、节省磁盘空间 2、使用方式 2.1、安装方式 npm install -g pnpm 2.2、创建项目 pnpm create vue 二、Eslint配置代码风格 1、环境同步 1、禁用Pret…...

二叉树遍历(牛客网)

描述 编一个程序&#xff0c;读入用户输入的一串先序遍历字符串&#xff0c;根据此字符串建立一个二叉树&#xff08;以指针方式存储&#xff09;。 例如如下的先序遍历字符串&#xff1a; ABC##DE#G##F### 其中“#”表示的是空格&#xff0c;空格字符代表空树。建立起此二叉树…...

语音识别:whisper部署服务器(远程访问,语音实时识别文字)

Whisper是OpenAI于2022年发布的一个开源深度学习模型&#xff0c;专门用于语音识别任务。它能够将音频转换成文字&#xff0c;支持多种语言的识别&#xff0c;包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下&#xff08;如不同的背景噪声水…...

Faust勒索病毒:了解最新变种[nicetomeetyou@onionmail.org].faust,以及如何保护您的数据

导言&#xff1a; 在一个快节奏的数字世界中&#xff0c;我们经常忽视数据安全的重要性。然而&#xff0c;最新的勒索病毒——[nicetomeetyouonionmail.org].faust、[support2022cock.li].faust、[tsai.shenmailfence.com].faust 、[Encrypteddmailfence.com].faust、[Deciphe…...

EI Scopus检索 | 第二届大数据、物联网与云计算国际会议(ICBICC 2024) |

会议简介 Brief Introduction 2024年第二届大数据、物联网与云计算国际会议(ICBICC 2024) 会议时间&#xff1a;2024年12月29日-2025年1月1日 召开地点&#xff1a;中国西双版纳 大会官网&#xff1a;ICBICC 2024-2024 International Conference on Big data, IoT, and Cloud C…...

判断闰年(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int year 2000;//执行循环判断&#xff1b;while (year < 2010){//执行流程&#xff1b;//判断能否整除4&#xff1…...

2024全国水科技大会【协办单位】凌志环保股份有限公司

凌志环保股份有限公司成立于1998年5月&#xff0c;集团共有20余家经营主体组成&#xff0c;凌志环保作为村镇污水处理领域的领军企业、农村污水处理“家电化”的开创者&#xff0c;深耕水治理行业25年&#xff0c;2022年被工信部认定为国家级专精特新“小巨人”企业。公司的核心…...

以太坊开发学习-solidity(二)值类型

文章目录 第一个Solidity程序编译并部署代码变量值类型1. 布尔型2. 整型3. 地址类型4. 定长字节数组 第一个Solidity程序 开发工具&#xff1a;remix 本教程中&#xff0c;我会用remix来跑solidity合约。remix是以太坊官方推荐的智能合约开发IDE&#xff08;集成开发环境&#…...

实景剧本杀小程序儿童公园剧本杀小程序系统开发

开发实景剧本杀小程序儿童公园剧本杀系统需要考虑以下几个方面&#xff1a; 1. 游戏设计&#xff1a;设计适合儿童玩耍的剧本杀游戏&#xff0c;考虑场景、角色、任务、线索等因素&#xff0c;以适应儿童的理解力和参与度。 2. 技术实现&#xff1a;利用小程序技术框架进行系…...

AJAX——综合案例

1 Bootstrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 引入bootstrap.css和bootstrap.js准备弹框标签&#xff0c;确认结构通过自定义属性&#xff0c;控制弹框的显示和隐藏 <!DOCTYPE html> <html la…...

数字化社会的新纪元:揭秘 Web3 的社交网络

随着区块链技术的不断发展和普及&#xff0c;Web3作为其重要组成部分&#xff0c;正逐渐改变着社交网络的面貌。Web3的出现不仅为社交网络带来了新的技术和理念&#xff0c;还为用户提供了更加开放、透明和安全的社交体验。本文将深入探讨Web3的社交网络&#xff0c;揭示其在数…...

旋转花键的制造工艺

旋转花键的制造工艺是一门精细的技术&#xff0c;涉及多个步骤和精细的操作&#xff0c;以确保最终产品的质量和性能&#xff0c;下面简单介绍下旋转花键的制造工艺。 1、原材料准备&#xff1a;制造旋转花键的核心是选择合适的材料&#xff0c;根据花键的规格和性能要求&#…...

python--高阶函数

python--高阶函数 mapmap的用法map的代码示例 filterfilter的用法filter的代码示例 reducereduce的用法reduce的代码示例 返回函数IO编程打开文件文件打开--打开格式文件打开--上下文管理器打开文件&#xff08;会自动close文件&#xff09; 文件读取文件读取--file.read(m)文件…...

Vue/Uni-app/微信小程序 v-if 设置出场/退出动画(页面交互不死板,看起来更流畅)

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 在Vue.js中&#xff0c;使用v-if进行条件渲染时设置动画可以通过<transition>组件来实现。 具体操作步骤如下&#xff1a; 包裹条件渲染的元素&#xff1a;您需要将要通过v-if控制显示隐藏的元素包裹在<transition…...

加速量子计算机商业化!富士通日立NEC等联合成立新量子计算公司

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨沛贤 深度好文&#xff1a;700字丨5分钟阅读 日本工业界和学术界将在 2024 年联合成立新一家公司&#xff0c;研发量子计算机并将其商业化。包括富士通、日立和NEC在内…...

RPC学习笔记一

什么是RPC RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种用于实现分布式系统中不同计算机或进程之间进行通信和调用的技术和模式。 在传统的过程调用中&#xff0c;当一个程序需要调用另一个程序的函数或方法时&#xff0c;通常是在同一台…...

计算机设计大赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…...

LabVIEW飞行器螺旋桨性能测试与数据监控

LabVIEW飞行器螺旋桨性能测试与数据监控 开发LabVIEW的电动飞行器螺旋桨性能测试与数据监控系统&#xff0c;专门针对电动飞行器螺旋桨在运行过程中的性能测试和监控需求。通过采集转速、转矩、拉力和温度等关键参数&#xff0c;系统能够实时监测和分析螺旋桨的状态&#xff0…...

数字电子技术实验(九)

单选题 1. 本实验仿真与实际操作时时钟信号源必须满足什么条件&#xff1f; A. 仿真和实际操作时&#xff0c;时钟信号源频率必须大于1KHZ。 B. 仿真和实际操作时钟信号源频率可以在1 - 5 0HZ之间调整。 C. 仿真和实际操作时钟信号源频率必须是1HZ。 D. 仿真和实际操作时钟…...

Android 开发环境搭建(Android Studio 安装图文详细教程)

Android Studio 下载 https://developer.android.google.cn/studio?hlzh-cn Android Studio 安装 检查电脑是否启用虚拟化 如果没有开启虚拟化&#xff0c;则需要进入电脑的 BIOS 中开启 直接 next选择安装的组件&#xff0c;Android Studio 和 Android 虚拟设备&#xff…...

解决方案:使用Vscode运行命令时,.出现 __vsc_prompt_cmd_original: command not found

参考:https://blog.csdn.net/qq_44949985/article/details/128902944 解决方案&#xff1a;使用Vscode运行命令时,.出现 __vsc_prompt_cmd_original: command not found 问题描述&#xff1a; 在本地的vscode上使用ssh-remote登录到远程服务器&#xff08;操作系统为ubuntu 18.…...

比较有名的设计网站/网站关键词优化wang

【小韦同学神犇营-24-分段函数】 题目&#xff1a; 描述 编写程序&#xff0c;计算下列分段函数yf(x)的值。 y-x2.5; 0 < x < 5 y2-1.5(x-3)(x-3); 5 < x < 10 yx/2-1.5; 10 < x < 20 输入 一个浮点数N,0 < N < 20 输出 输出N对应的分段函数值&…...

wordpress写软文赚钱/推广引流方法有哪些推广方法

医学图像处理的常用格式 开门见“Hi”&#xff0c;如果你跟我一样喜欢处理医学图像&#xff0c;我推荐你用TIFF,TIF格式来处理&#xff0c;保存医学图像。不论是DR,CT还是MRI。我都推荐。 TIFF格式是无损压缩&#xff0c;能够完美重建 。兼容性很好&#xff0c;很多常用软件都能…...

石家庄长安区网站建设公司/推广运营是做什么的

call和apply用来调用函数&#xff0c;并用指定对象&#xff08;第一个参数&#xff09;替换函数的 this 值&#xff0c;同时用指定数组替换函数的参数。注&#xff1a;也可以不指定参数&#xff0c;此时只是单纯的调用函数&#xff0c;如&#xff1a;fun.call() 语法&#xff1…...

做导购网站赚钱吗/惠州百度推广优化排名

public class TestWhile{public static void main(String[] args){/*需求&#xff1a;用while循环打印出1到9的值*/int i 1;while(i < 9){System.out.println("i"i);i;}}}...

我国婚纱网站建设的现状/关键词优化推广公司排名

为什么80%的码农都做不了架构师&#xff1f;>>> 国内的应用开发者每天都在辛辛苦苦写完代码处理了无数种分辨率、兼容性问题之后&#xff0c;还要面对可能要发布到国内应用市场&#xff0c;各种应用中心、下载中心、论坛等各种线下推广的巨大悲剧情况&#xff0c;再…...

网站建设的栏目内容/湖南长沙今日疫情

官方地址 源码github 寻找方法 小程序官网 记录一下&#xff0c;有时候真的找不到…...