背景:我正在尝试迁移项目,以使用我们的新的升级的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>
请告知我可能要寻找的什么想法导致问题。
答案 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...
}