Grails版本莫名其妙地无法发布到Nexus

时间:2019-04-02 14:49:15

标签: maven grails nexus publishing

背景:我正在尝试迁移项目,以使用我们的新的升级的nexus实例代替旧的实例。 Gradle项目和Maven项目进展顺利,但Grails项目却并非如此。

问题:发布,并且仅发布无法发布到新的关系。快照发布工作正常。快照和发行发布在旧关系中都可以正常工作,而我移交的使用相同用户凭据的Maven和Gradle项目也可以正常工作。

错误如下

  

生成的POM:/var/atlassian/application-data/bamboo/xml-data/build-dir/CS-AREL-JOB1/target/pom.xml。

     

[部署]部署到https://nexus.mydomain.com/repository/maven-releases/

     

[部署]上传:com / mydomain / myproject-admin / 1.11.9 / myproject-admin-1.11.9.war到https://nexus.mydomain.com/repository/maven-releases/上的atlassian_nexus_releases存储库

     

[deploy]从atlassian_nexus_releases转移44484K

     

[deploy]写入服务器错误

     

[deploy]处理Maven工件任务时发生错误。

     

[部署]诊断:

     

[部署]

     

[deploy]部署工件'com.mydomain:myproject-admin:war'时出错:部署工件时出错:传输文件时出错

     

[deploy]写入服务器错误

我需要的是关于在哪里查看的一些想法,因为所有常见的检查似乎都不是问题。用户凭据是正确的,并且可以用于gradle和maven项目。 URL是正确的,并且适用于gradle和maven项目。在旧的联系和新的联系之间,构建没有改变,因此我认为构建仍在正确地生成发行工件而不是快照工件。还有什么问题吗?

配置:

grails.settings.groovy

grails.project.dependency.authentication = {
    repositories {
        mavenRepo "https://nexus.mydomain.com/repository/maven-public/"
    }
    credentials {
        id = "atlassian_nexus"
        username = "dev_read_user"
        password = "****"
    }
}
grails.project.ivy.authentication = {
    repositories {
        mavenRepo "https://nexus.mydomain.com/repository/maven-public/"
    }
    credentials {
        realm = "Sonatype Nexus Repository Manager"
        host = "atlassian.mydomain.com"
        username = "dev_read_user"
        password = "****"
    }
}
grails.project.dependency.distribution = {
    localRepository = "~/.m2/"
    remoteRepository(id: "atlassian_nexus_snapshots", url: 'https://nexus.mydomain.com/repository/maven-snapshots/'){
        authentication(username: 'nexus_user', password: '****')
    }
    remoteRepository(id: "atlassian_nexus_releases", url: 'https://nexus.mydomain.com/repository/maven-releases/'){
        authentication(username: 'nexus_user', password: '****')
    }
}

上面的文件在迁移过程中变化最大,因此我认为它是最可能的罪魁祸首,尽管也有可能将nexus本身的某些配置作为问题?

bamboo-build-release.sh

echo 'Making and commiting release version...';
JAVA_HOME=$bamboo_jdk_1_8 \
./grailsw version-update x.x.x --non-interactive;
git commit -m 'Increment version to release' -- application.properties;

echo 'Creating and pushing tag...';
grep app.version application.properties | cut -d"=" -f2 | xargs -I 
version git tag -a version -m "Tag Release";
git push $GIT_URL --tags;

echo 'Building RELEASE war and publishing to Nexus...';
JAVA_HOME=$bamboo_jdk_1_8 \
./grailsw prod maven-deploy --repository=atlassian_nexus_releases -- non-interactive -verbose;

echo 'Incrementing to next snapshot...';
JAVA_HOME=$bamboo_jdk_1_8 \
./grailsw version-update p s --non-interactive;

echo 'Committing and pushing version changes...';
git commit -m 'Increment version to next snapshot' --application.properties;
git push $GIT_URL $GIT_BRANCH;

echo 'Completed bamboo-build-release.sh';

我在上面的构建文件中所做的唯一更改是添加了“ -verbose”,这样我就可以获得有关失败原因的更多信息。如上所示,它没有提供有关发布失败原因的更多细节。

我确认生成的pom具有指定的正确的非快照版本:

<?xml version='1.0' encoding='UTF-8'?>
<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mydomain</groupId>
  <artifactId>myproject-admin</artifactId>
  <packaging>war</packaging>
  <version>1.11.9</version>
  <name>myproject-admin</name>
</project>

请告知我可能要寻找的什么想法导致问题。

1 个答案:

答案 0 :(得分:0)

尽管我仍然不确定为什么它在发行版中始终失败并可以用于快照,但是以下针对间歇性常春藤到联系失败的解决方案为我工作:https://support.sonatype.com/hc/en-us/articles/218101688-Ivy-deploy-fails-intermittently-with-java-io-IOException-Error-writing-to-server-

我最终在BuildConfig.groovy文件中添加了以下依赖项:

dependencies{
    build 'commons-codec:commons-codec:1.7'
    build 'commons-httpclient:commons-httpclient:3.1'
    build 'commons-logging:commons-logging:1.1.1'

    // other dependencies...
}