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

2024-03-19 09:12

本文主要是介绍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存储库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文