Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用drone.io在maven存储库中进行授权_Maven_Continuous Integration_Drone - Fatal编程技术网

如何使用drone.io在maven存储库中进行授权

如何使用drone.io在maven存储库中进行授权,maven,continuous-integration,drone,Maven,Continuous Integration,Drone,因此,我得到了一个在我的服务器上与nexus3存储库一起运行的自托管实例。 现在我有了一个java项目,它应该在每次推送时构建、测试并部署到存储库中,在我们进入部署部分之前,它工作得很好。我在插件的官方网站上找到了该插件,该插件应该根据配置创建一个settings.xml,该插件可以工作(使我的管道通过cat输出文件的内容,并显示一个有效的settings.xml文件)。 下一步配置为运行 mvn部署-B-s设置.xml 出于某种原因,maven不使用settings.xml中提供的用户名和密码

因此,我得到了一个在我的服务器上与nexus3存储库一起运行的自托管实例。 现在我有了一个java项目,它应该在每次推送时构建、测试并部署到存储库中,在我们进入部署部分之前,它工作得很好。我在插件的官方网站上找到了该插件,该插件应该根据配置创建一个settings.xml,该插件可以工作(使我的管道通过cat输出文件的内容,并显示一个有效的settings.xml文件)。 下一步配置为运行

mvn部署-B-s设置.xml

出于某种原因,maven不使用settings.xml中提供的用户名和密码(服务器总是返回未经授权的401错误)

完整.drone.yml:

kind: pipeline
name: default
type: docker

steps:
  - name: compile
    image: maven:3-jdk-8
    commands:
      - mvn compile -B -U
    when:
      event:
        - push
  - name: test
    image: maven:3-jdk-8
    commands:
      - mvn test -B
    when:
      event:
        - push
  - name: authenticate
    image: robertstettner/drone-mvn-auth
    settings:
      servers:
        - id: some-id (same in pom.xml distribution repos)
          username: username
          password:
            from_secret: repo_password
  - name: deploy_repo
    image: maven:3-jdk-8
    commands:
      - mvn deploy -B -gs settings.xml
    when:
      event:
        - push
一些建议,为什么这不起作用将是愚蠢的!提前谢谢

编辑2: 因此,我进一步调查并安装在我的服务器上,以分析流量(客户端->Nginx SSL终止代理->mitmproxy->运行nexus)

为了授权,maven使用了一个名为“Authorization”的头文件。并且内容是“基本”+用户名:用base64编码的密码

事实证明,来自无人机实例发出的请求的授权标头的内容格式不正确。解码结果如下:

授权:基本用户名:[对象]

而不是

授权:基本用户名:密码

我要试着绕过这条路

password:
  from_secret: repo_password

希望settings.xml文件是正确生成的

在尝试了几个小时(但失败)后,我现在决定使用自定义步骤使用环境变量创建settings.xml。 只需将密码“repo_username”设置为用户名,将密码“repo_password”设置为密码,就可以了

-name:create settings.xml
图片:阿尔卑斯山:最新
环境:
回购ID:sytm nexus
REPO_用户名:
from_secret:repo_用户名
REPO_密码:
from_secret:repo_密码
命令:
-回显“$REPO\u ID”$REPO\u用户名“$REPO\u密码”>settings.xml

编辑:由于该解决方案对我来说太粗糙,我创建了自己的无人机插件,可以找到它

我将首先测试settings.xml文件是否正常,方法是尝试部署一个简单的maven“hello world”项目,然后继续。您也可以尝试自己设置凭据,这并不复杂(而不是依赖第三方)。