如何使用drone.io在maven存储库中进行授权
因此,我得到了一个在我的服务器上与nexus3存储库一起运行的自托管实例。 现在我有了一个java项目,它应该在每次推送时构建、测试并部署到存储库中,在我们进入部署部分之前,它工作得很好。我在插件的官方网站上找到了该插件,该插件应该根据配置创建一个settings.xml,该插件可以工作(使我的管道通过cat输出文件的内容,并显示一个有效的settings.xml文件)。 下一步配置为运行如何使用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中提供的用户名和密码
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”项目,然后继续。您也可以尝试自己设置凭据,这并不复杂(而不是依赖第三方)。