Am 2020-03-07 um 11:36 schrieb Hervé BOUTEMY:
Hi,
Yesterday, I made a key step forward for Reproducible Builds with Maven: I
wrote code to easily check that your local build produces the same binaries as
the reference binaries published either to staging or to Central repository.
For a live example, see the last paragraph of Maven Site Plugin vote that just
started [1].
Process to check build output is based on a single plugin goal, currently named
buildinfo:save [2]:
1. it creates a buildinfo file during build recording output fingerprints, that
will eventually in the future be published to Central repository
2. it downloads reference artifacts and/or reference buildinfo and checks that
the output of the local build is the same as the reference.
Now I want to discuss: is it clear? can you test and report, please?
If the feedback is positive, the next question will be: in which plugin should
we put this goal to make a release and add it to our parent pom during release,
so we publish reference buildinfo along our reference binaries to Central
repository.
Thanks for your feedback
Regards,
Hervé
[1]
https://lists.apache.org/thread.html/rd3af15d383ddceeb950cd90569e3dcdd6e5a0f5d3cd653ec534b0609%40%3Cdev.maven.apache.org%3E
[2] https://github.com/apache/maven-studies/tree/maven-buildinfo-plugin
I have now installed latest OpenJDK 7 from AdoptOpenJDK source.
[INFO] --- maven-buildinfo-plugin:1.0-SNAPSHOT:save (default-cli) @
maven-site-plugin ---
[INFO] Saved info on build to
/usr/home/mosipov/Projekte/maven-site-plugin/target/maven-site-plugin-3.9.0.buildinfo
[INFO] Checking against reference build from
https://repository.apache.org/content/repositories/maven-1554/...
[WARNING] Reference buildinfo file not found: it will be generated from
downloaded reference artifacts
[INFO] Minimal buildinfo generated from downloaded artifacts:
/usr/home/mosipov/Projekte/maven-site-plugin/target/reference/maven-site-plugin-3.9.0.buildinfo
[WARNING] size mismatch maven-site-plugin-3.9.0-source-release.zip: diffoscope
target/reference/maven-site-plugin-3.9.0-source-release.zip
target/maven-site-plugin-3.9.0-source-release.zip
[WARNING] size mismatch maven-site-plugin-3.9.0-sources.jar: diffoscope
target/reference/maven-site-plugin-3.9.0-sources.jar
target/maven-site-plugin-3.9.0-sources.jar
[WARNING] Reproducible Build output summary: 1 files ok, 2 different, 0 missing
[WARNING] diff target/reference/maven-site-plugin-3.9.0.buildinfo
target/maven-site-plugin-3.9.0.buildinfo
on
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/share/java/maven
Java version: 1.7.0_251, vendor: Oracle Corporation, runtime:
/usr/local/openjdk7/jre
Default locale: de_DE, platform encoding: UTF-8
OS name: "freebsd", version: "11.3-release-p6", arch: "i386", family: "unix"
and
$ git branch
* (HEAD losgelöst bei maven-site-plugin-3.9.0)
diffoscope target/reference/maven-site-plugin-3.9.0-source-release.zip
target/maven-site-plugin-3.9.0-source-release.zip
There is a diff in maven-site-plugin-3.9.0/dependency-reduced-pom.xml
diffoscope target/reference/maven-site-plugin-3.9.0-sources.jar
target/maven-site-plugin-3.9.0-sources.jar
So is here diff in the pom.xml which is actually dependency-reduced-pom.xml.
├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
│ ├── META-INF/maven/org.apache.maven.plugins/maven-site-plugin/pom.xml
│ │ @@ -243,100 +243,40 @@
│ │ <profiles>
│ │ <profile>
│ │ <id>run-its</id>
│ │ <build>
│ │ <plugins>
│ │ <plugin>
│ │ <artifactId>maven-invoker-plugin</artifactId>
│ │ - <version>3.2.1</version>
│ │ - <executions>
│ │ - <execution>
│ │ - <id>integration-test</id>
│ │ - <goals>
│ │ - <goal>install</goal>
│ │ - <goal>integration-test</goal>
│ │ - <goal>verify</goal>
│ │ - </goals>
│ │ - <configuration>
│ │ - <projectsDirectory>src/it/projects</projectsDirectory>
│ │ - <settingsFile>src/it/mrm/settings.xml</settingsFile>
│ │ - <filterProperties>
│ │ -
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
│ │ - </filterProperties>
│ │ - <goals>
│ │ - <goal>clean</goal>
│ │ -
<goal>org.apache.maven.plugins:maven-site-plugin:3.9.0:site</goal>
│ │ - </goals>
│ │ - <properties>
│ │ - <maven.compiler.source>1.7</maven.compiler.source>
│ │ - <maven.compiler.target>1.7</maven.compiler.target>
│ │ -
<https.protocols>TLSv1,TLSv1.1,TLSv1.2</https.protocols>
│ │ - </properties>
│ │ - <debug>true</debug>
│ │ -
<cloneProjectsTo>/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/it</cloneProjectsTo>
│ │ - <preBuildHookScript>setup</preBuildHookScript>
│ │ - <postBuildHookScript>verify</postBuildHookScript>
│ │ -
<localRepositoryPath>/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/local-repo</localRepositoryPath>
│ │ - <pomIncludes>
│ │ - <pomInclude>*/pom.xml</pomInclude>
│ │ - </pomIncludes>
│ │ - <ignoreFailures>false</ignoreFailures>
│ │ - <environmentVariables>
│ │ -
<JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
│ │ - </environmentVariables>
│ │ - </configuration>
│ │ - </execution>
│ │ - </executions>
│ │ <configuration>
│ │ <projectsDirectory>src/it/projects</projectsDirectory>
│ │ <settingsFile>src/it/mrm/settings.xml</settingsFile>
│ │ <filterProperties>
│ │
<mrm.repository.url>${mrm.repository.url}</mrm.repository.url>
│ │ </filterProperties>
│ │ <goals>
│ │ <goal>clean</goal>
│ │ -
<goal>org.apache.maven.plugins:maven-site-plugin:3.9.0:site</goal>
│ │ +
<goal>${project.groupId}:${project.artifactId}:${project.version}:site</goal>
│ │ </goals>
│ │ <properties>
│ │ - <maven.compiler.source>1.7</maven.compiler.source>
│ │ - <maven.compiler.target>1.7</maven.compiler.target>
│ │ - <https.protocols>TLSv1,TLSv1.1,TLSv1.2</https.protocols>
│ │ +
<maven.compiler.source>${maven.compiler.source}</maven.compiler.source>
│ │ +
<maven.compiler.target>${maven.compiler.target}</maven.compiler.target>
│ │ </properties>
│ │ - <debug>true</debug>
│ │ -
<cloneProjectsTo>/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/it</cloneProjectsTo>
│ │ - <preBuildHookScript>setup</preBuildHookScript>
│ │ - <postBuildHookScript>verify</postBuildHookScript>
│ │ -
<localRepositoryPath>/home/herve/projets/maven/sources/plugins/core/maven-site-plugin/target/checkout/target/local-repo</localRepositoryPath>
│ │ - <pomIncludes>
│ │ - <pomInclude>*/pom.xml</pomInclude>
│ │ - </pomIncludes>
│ │ - <ignoreFailures>false</ignoreFailures>
│ │ - <environmentVariables>
│ │ -
<JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
│ │ - </environmentVariables>
│ │ </configuration>
│ │ </plugin>
│ │ <plugin>
│ │ <groupId>org.codehaus.mojo</groupId>
│ │ <artifactId>mrm-maven-plugin</artifactId>
│ │ <version>1.2.0</version>
│ │ <executions>
│ │ <execution>
│ │ <goals>
│ │ <goal>start</goal>
│ │ <goal>stop</goal>
│ │ </goals>
│ │ - <configuration>
│ │ - <repositories>
│ │ - <mockRepo>
│ │ - <source>src/it/mrm/repository</source>
│ │ - </mockRepo>
│ │ - <proxyRepo/>
│ │ - </repositories>
│ │ - </configuration>
│ │ </execution>
│ │ </executions>
│ │ <configuration>
│ │ <repositories>
│ │ <mockRepo>
│ │ <source>src/it/mrm/repository</source>
│ │ </mockRepo>
Any idea why my POM differs from your one?
Michael
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]