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

问题描述 投票:0回答:1

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

mvn deploy -B -s settings.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:因此,我进行了进一步调查,并在服务器上安装了mitmproxy来分析流量(客户端-> Nginx SSL终止代理-> mitmproxy->运行中的关系)。

显然,maven使用一个称为“ Authorization”的标头。内容为“基本” +用户名:使用base64编码的密码。

结果是,无人机实例发出的请求中的Authorization标头的内容格式不正确。解码后看起来像这样:

Authorization: Basic USERNAME:[object Object]

代替

Authorization: Basic USERNAME:password

我将尝试绕过

password:
  from_secret: repo_password

并希望settings.xml文件正确生成

maven continuous-integration drone
1个回答
0
投票

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

  - name: create settings.xml
    image: alpine:latest
    environment:
      REPO_ID: sytm-nexus
      REPO_USERNAME:
        from_secret: repo_username
      REPO_PASSWORD:
        from_secret: repo_password
    commands:
      - echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><servers><server><id>'$REPO_ID'</id><username>'$REPO_USERNAME'</username><password>'$REPO_PASSWORD'</password></server></servers></settings>' > settings.xml
© www.soinside.com 2019 - 2024. All rights reserved.