如何从Nexus下载文件到Jenkins

56次阅读
没有评论

问题描述

在使用Jenkins时,希望能够从Nexus下载一个文件作为zip文件到Jenkins agent,并在准备好后部署到nginx服务器。用户只能使用用户名和密码对访问Nexus。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Jenkins中,可以将凭据(用户名/密码或SSH密钥对)放入Jenkins内置的凭据存储中,然后在Pipeline脚本中使用sshagent步骤来执行SCP命令。以下是具体步骤:
1. 将凭据添加到Jenkins凭据存储中。
2. 在Pipeline脚本中使用sshagent步骤,并指定凭据名称。
下面是一个示例Pipeline脚本:

pipeline {
    agent any
    stages {
        stage('Download Artifact') {
            steps {
                sshagent(credentials: ['my-credentials']) {
                    sh('scp mynexus.com/my_artifact.zip ~/my_artifact.zip')
                }
            }
        }
        // 其他阶段和步骤
    }
}

在上面的示例中,我们首先在Jenkins凭据存储中添加了一个名为my-credentials的凭据。然后,在Pipeline脚本的Download Artifact阶段中,我们使用sshagent步骤来执行SCP命令,并指定凭据名称。这将使Jenkins能够使用凭据中的用户名和密码来访问Nexus,并将文件下载到Jenkins agent上的指定路径。
请注意,如果你的Jenkins没有安装SSH Agent插件,你可能需要先安装该插件才能使用sshagent步骤。

方案2

另一种方法是在Jenkins中使用参数化构建,并使用curl命令从Nexus下载文件。以下是具体步骤:
1. 在Jenkins中创建一个String参数artifactID,以及一个Password参数NexusUserNexusPassword,分别用于存储Nexus的用户名和密码。
2. 在Pipeline脚本中使用curl命令来下载文件,并指定Nexus的URL和参数化构建的参数。
下面是一个示例Pipeline脚本:

pipeline {
    agent any
    parameters {
        string(name: 'artifactID', defaultValue: 'my_artifact', description: 'Nexus artifact ID')
        password(name: 'NexusUser', defaultValue: '', description: 'Nexus username')
        password(name: 'NexusPassword', defaultValue: '', description: 'Nexus password')
    }
    stages {
        stage('Download Artifact') {
            steps {
                sh("curl -v -u ${params.NexusUser}:${params.NexusPassword} -o ~/tmp_dl/distr.zip https://my_nexus_url.com/nexus/content/repositories/${params.artifactID}/distrib.zip")
            }
        }
        // 其他阶段和步骤
    }
}

在上面的示例中,我们首先在Jenkins中创建了三个参数:artifactIDNexusUserNexusPassword。然后,在Pipeline脚本的Download Artifact阶段中,我们使用curl命令来下载文件,并使用参数化构建的参数来指定Nexus的URL和凭据。
请注意,为了避免将用户名和密码以明文形式暴露在日志中,你可以使用Jenkins Mask Passwords插件来隐藏凭据。建议使用凭据的方式来访问Nexus,而不是直接在脚本中使用用户名和密码。

注意:方案1是使用SSH进行文件传输,方案2是使用curl命令进行文件下载。根据你的具体需求和环境,选择适合的方案。

正文完