【问题标题】:Problems transferring build artifacts from Jenkins running in a docker container从在 docker 容器中运行的 Jenkins 传输构建工件时出现问题
【发布时间】:2021-06-28 19:43:31
【问题描述】:

我是一个新手,有这个 CI/CD 容器的东西,所以请在我错的地方纠正我。
我似乎不知道如何通过在我的 jenkins 实例(工作区)上创建的 npm 构建文件发送到远程服务器。我有一个管道可以成功引入我的 github 存储库,完成我所有有趣的 npm 工作(npm 安装、测试、构建)。我在我的 jenkins 实例 /workspace 中看到了我的构建目录。
我的环境如下。我们有一个安装了 docker(带有 Portainer)的服务器。詹金斯在一个安装了卷的容器中运行(我的反应构建目录在这里)。管道或构建等没有问题。我只是不知道如何将我的工件从我的 jenkins 工作区目录推送到我的“远程”开发服务器。

我可以在我的 jenkins 容器中成功打开一个控制台(作为 jenkins 用户的端口),并使用我的远程服务器凭据从工作区目录中打开 scp 文件(但密码是必需的)。

我安装并使用了“通过 SSH 发布”Jenkins 插件,并从我的设置中获得了成功的“测试配置”。
我在远程机器上创建了我的 RSA 密钥(我试图将我的构建文件推送到)。 然后,我将私钥(在没有密码的情况下创建)粘贴到插件的“使用密码身份验证,或使用不同的密钥”部分。再次,我获得了成功的测试连接。

在我的管道中,最后一步是部署,我使用此命令

sh 'scp -r build myusername@xx.xx.xx.xx:/var/files/react-tester'

我收到“权限被拒绝(公钥、密码)”。错误。我没有与 rsa 密钥关联的密码。我尝试了两种方法,在远程机器上创建 rsa 密钥作为我的远程用户,将 jenkins 机器作为 jenkins 用户。我已经阅读了人们以两种方式创建密钥的示例,但不确定创建密钥并粘贴到“通过 SSH 发布”插件的哪个部分的用户/机器组合。
我没有想法。

【问题讨论】:

标签: docker jenkins ssh jenkins-pipeline portainer


【解决方案1】:

首先,进入“Manage Jenkins”>“Credentials”,添加一个类型为“SSH Username with private key”的新 SSH 凭证并填写“Username”和您的私钥(如果您还没有完成,请生成一个然而)字段(您也可以上传一个)。不要忘记,您必须将生成的公钥复制到远程服务器上的${SSH_USERNAME}/.ssh/authorized_keys 文件中。

我假设您在这里使用的是脚本或 DSL 管道。在您的代码中,构建应用程序后,您可以将其推送到您的服务器,将此步骤添加到您的管道:

pipeline {

    stages {
        stage("Pushing changes to remote server") {
            steps {
                script {
                    def remote_server = "1.2.3.4"
                    withCredentials([sshUserPrivateKey(credentialsId: 'my-key', keyFileVariable: 'SSH_KEY', passphraseVariable: '', usernameVariable: 'SSH_USERNAME')]) {
                        sh "scp -i \${SSH_KEY} build/ ${SSH_USERNAME}@${remote_server}:/var/files/react-tester/"
                    }
                }
            }
        }
    }

}

最好的问候。

【讨论】:

  • 谢谢 Stefano,但我得到了它的“老式方式”。我禁用了插件,然后在我的 jenkins 容器上创建了它们的密钥对,然后运行了这个命令:ssh-copy-id -i ~/.ssh/id_rsa.pub myusernsme@remoteip。如果其他人来到这里,我遵循了这些说明(尽管不是 jenkins/docker 特定的):upcloud.com/community/tutorials/use-ssh-keys-authentication
猜你喜欢
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多