This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch release/0.5.0 in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
commit 71b929d82730c969587c62f5b9e29e4ff8da0d57 Author: Volkan Yazıcı <[email protected]> AuthorDate: Fri Sep 8 09:29:04 2023 +0200 Bump `logging-parent` version to `10.0.0-SNAPSHOT` --- .github/workflows/build.yml | 4 + RELEASING.adoc | 37 ++-- log4j-tools-parent/pom.xml | 28 --- pom.xml | 435 +------------------------------------------- 4 files changed, 26 insertions(+), 478 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1f9bd37..83e0cd1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,5 +55,9 @@ jobs: if: github.repository == 'apache/logging-log4j-tools' && startsWith(github.ref, 'refs/heads/release/') uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yml@main secrets: inherit + # Write permissions to allow the Maven `revision` property update, changelog release, etc. + permissions: + contents: write with: project-name: log4j-tools + distribution-attachment-count: 2 diff --git a/RELEASING.adoc b/RELEASING.adoc index 8256819..0acbb37 100644 --- a/RELEASING.adoc +++ b/RELEASING.adoc @@ -43,20 +43,29 @@ In the code examples below, assuming the version to be released is `7.8.0`. == Stage the release -. Checkout the release branch: `git checkout -B release/7.8.0 origin/main` -. Perform and commit following changes: -.. Set the `revision` property to `7.8.0` in xref:pom.xml[`pom.xml`] -.. For release notes -... Run `./mvnw -N -P changelog-release` and verify `src/changelog` content (e.g., `.release-notes.md.ftl`) -... Run `./mvnw -N -P changelog-export` and verify `target/release-notes` content -. Make sure that `./mvnw clean verify` succeeds – if not, implement necessary fixes -. Commit and push the `release/7.8.0` branch -. Make sure the associated https://github.com/apache/{repository-name}/actions[GitHub Actions workflow] succeeds: +. Create and push the release branch: ++ +[source,bash] +---- +git fetch -p +git checkout -B release/7.8.0 origin/main +git push origin release/7.8.0 +---- +. Verify that the associated https://github.com/apache/{repository-name}/actions[GitHub Actions workflow] succeeds: +.. `revision` property in `pom.xml` is updated +.. Changelog is released (i.e., `src/changelog/7.8.0` folder is populated) .. *Signed artifacts* are uploaded to the _Staging Repositories_ in https://repository.apache.org/[repository.apache.org] -.. *Signed distribution and its checksum* (e.g., `apache-{project-name}-7.8.0.{zip,.zip.asc,.zip.sha512}`) are uploaded to https://dist.apache.org/repos/dist/dev/logging/log4j[dist.apache.org/repos/dist/**dev**/logging/log4j] Subversion repository (along with auxiliary files; email texts, etc.) +.. *Signed distribution and its checksum* (e.g., `apache-{project-name}-7.8.0-{bin,src}.{zip,.zip.asc,.zip.sha512}`) are uploaded to https://dist.apache.org/repos/dist/dev/logging/log4j[dist.apache.org/repos/dist/**dev**/logging/log4j] Subversion repository (along with auxiliary files; email texts, etc.) + If not, commit necessary fixes, push, and repeat. + ++ +[TIP] +==== +GitHub Actions workflow is idempotent. +You can iterate on the `release/7.8.0` branch to perfect it. +==== . _Close_ the repository in https://repository.apache.org/[repository.apache.org] == Vote the release @@ -65,7 +74,8 @@ If not, commit necessary fixes, push, and repeat. + [WARNING] ==== -Double-check the cited https://repository.apache.org[repository.apache.org] URL in the generated email, it might have changed! +**Fix the cited https://repository.apache.org[repository.apache.org] URL** in the generated email! +It changes after every Nexus deployment. ==== + [WARNING] @@ -128,11 +138,6 @@ Once the artifacts are visible in https://central.sonatype.dev/[central.sonatype + [WARNING] ==== -Double-check the cited https://repository.apache.org[repository.apache.org] URL in the generated email, it might have changed! -==== -+ -[WARNING] -==== Make sure your email is sent in plain text, that is, https://infra.apache.org/contrib-email-tips#nohtml[no HTML]! If you are using GMail, simply enable the _"Plain text mode"_ while composing your message. ==== diff --git a/log4j-tools-parent/pom.xml b/log4j-tools-parent/pom.xml index f8daae4..eb2dfb9 100644 --- a/log4j-tools-parent/pom.xml +++ b/log4j-tools-parent/pom.xml @@ -116,32 +116,4 @@ </dependencies> </dependencyManagement> - <build> - <plugins> - - <!-- Resolves `revision` property prior to deployment. - Skipping this step would result in artifacts not consumable by Maven. - https://maven.apache.org/maven-ci-friendly.html#install-deploy --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>flatten-maven-plugin</artifactId> - <version>${flatten-maven-plugin.version}</version> - <configuration> - <updatePomFile>true</updatePomFile> - <flattenMode>resolveCiFriendliesOnly</flattenMode> - </configuration> - <executions> - <execution> - <id>flatten-revision</id> - <goals> - <goal>flatten</goal> - </goals> - <phase>process-resources</phase> - </execution> - </executions> - </plugin> - - </plugins> - </build> - </project> diff --git a/pom.xml b/pom.xml index 8c69e4d..9f35d02 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ <parent> <groupId>org.apache.logging</groupId> <artifactId>logging-parent</artifactId> - <version>1.10.0-SNAPSHOT</version> + <version>10.0.0-SNAPSHOT</version> </parent> <groupId>org.apache.logging.log4j</groupId> @@ -43,20 +43,6 @@ <inceptionYear>2022</inceptionYear> - <organization> - <name>Apache Software Foundation</name> - <url>https://apache.org</url> - </organization> - - <licenses> - <license> - <name>Apache License, Version 2.0</name> - <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> - <distribution>repo</distribution> - <comments>A business-friendly OSS license</comments> - </license> - </licenses> - <developers> <developer> @@ -139,20 +125,6 @@ <!-- `project.build.outputTimestamp` is required for reproducible builds: https://maven.apache.org/guides/mini/guide-reproducible-builds.html --> <project.build.outputTimestamp>0</project.build.outputTimestamp> - <!-- dependency versions --> - <org.eclipse.jgit.version>6.6.1.202309021850-r</org.eclipse.jgit.version> - - <!-- plugin versions --> - <beanshell-maven-plugin.version>1.4</beanshell-maven-plugin.version> - <error-prone.version>2.21.1</error-prone.version> - <findsecbugs-plugin.version>1.12.0</findsecbugs-plugin.version> - <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version> - <log4j-changelog-maven-plugin.version>0.4.0</log4j-changelog-maven-plugin.version> - <maven-deploy-plugin.version>3.0.0</maven-deploy-plugin.version> - <sign-maven-plugin.version>1.0.1</sign-maven-plugin.version> - <spotbugs-maven-plugin.version>4.7.3.5</spotbugs-maven-plugin.version> - <xml-maven-plugin.version>1.1.0</xml-maven-plugin.version> - </properties> <!-- `dependencyManagement` must only contain `log4j-tools` modules and nothing else! @@ -186,36 +158,6 @@ </repositories> <build> - - <pluginManagement> - <plugins> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>flatten-maven-plugin</artifactId> - <version>${flatten-maven-plugin.version}</version> - <configuration> - <!-- Setting `outputDirectory` to `project.build.directory`, which is cleaned by `default-clean` execution of `clean:clean`. - This makes `flatten:clean` redundant. --> - <outputDirectory>${project.build.directory}</outputDirectory> - </configuration> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-plugin-plugin</artifactId> - <version>${maven-plugin.version}</version> - </plugin> - - <plugin> - <groupId>com.github.spotbugs</groupId> - <artifactId>spotbugs-maven-plugin</artifactId> - <version>${spotbugs-maven-plugin.version}</version> - </plugin> - - </plugins> - </pluginManagement> - <plugins> <!-- BOMs should ideally _only_ contain dependencies for modules of the project. @@ -251,382 +193,7 @@ </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <release>${java.version}</release> - <encoding>${project.build.sourceEncoding}</encoding> - <compilerArgs> - <arg>-Xlint:all</arg> - <arg>-XDcompilePolicy=simple</arg> - <arg>-Xplugin:ErrorProne</arg> - </compilerArgs> - <annotationProcessorPaths> - <path> - <groupId>com.google.errorprone</groupId> - <artifactId>error_prone_core</artifactId> - <version>${error-prone.version}</version> - </path> - </annotationProcessorPaths> - </configuration> - </plugin> - - <!-- Apache RAT (Release Audit Tool) check to verify licenses. - `apache-rat-plugin`: https://creadur.apache.org/rat/apache-rat-plugin/ - Release Audit Tool: https://creadur.apache.org/rat/index.html --> - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <configuration> - <consoleOutput>true</consoleOutput> - <excludes> - <exclude>**/target/**/*</exclude> - <exclude>.java-version</exclude> - <exclude>.mvn/jvm.config</exclude> - <exclude>**/*.txt</exclude> - <!-- IntelliJ IDEA files: --> - <exclude>.idea/**/*</exclude> - <exclude>**/*.iml</exclude> - <!-- License headers in GitHub templates pollute the prompt displayed to the user: --> - <exclude>.github/ISSUE_TEMPLATE/*.md</exclude> - <exclude>.github/pull_request_template.md</exclude> - </excludes> - </configuration> - <executions> - <execution> - <goals> - <goal>check</goal> - </goals> - <phase>verify</phase> - </execution> - </executions> - </plugin> - - <!-- Ensure that version for each dependency resolved during a build, is equal to or higher than all transitive dependency declarations. - A failure here requires adding the dependency to the dependency management. --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <executions> - <execution> - <id>enforce-upper-bound-deps</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireUpperBoundDeps /> - </rules> - </configuration> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>com.github.spotbugs</groupId> - <artifactId>spotbugs-maven-plugin</artifactId> - <configuration> - <plugins> - <plugin> - <groupId>com.h3xstream.findsecbugs</groupId> - <artifactId>findsecbugs-plugin</artifactId> - <version>${findsecbugs-plugin.version}</version> - </plugin> - </plugins> - </configuration> - <executions> - <execution> - <id>default-spotbugs</id> - <goals> - <goal>check</goal> - </goals> - <phase>verify</phase> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>xml-maven-plugin</artifactId> - <version>${xml-maven-plugin.version}</version> - <inherited>false</inherited> - <executions> - <execution> - <goals> - <goal>validate</goal> - </goals> - <configuration> - <validationSets> - <validationSet> - <dir>src/changelog</dir> - <includes>**/*.xml</includes> - <publicId>http://logging.apache.org/log4j/changelog</publicId> - <systemId>https://logging.apache.org/log4j/changelog-0.1.1.xsd</systemId> - <validating>true</validating> - </validationSet> - </validationSets> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - <profiles> - - <!-- `changelog-export` profile to export changelogs. - It is manually enabled by users to generate release notes. - See `RELEASING.adoc` for instructions. --> - <profile> - <id>changelog-export</id> - <build> - <defaultGoal>log4j-changelog:export</defaultGoal> - <plugins> - <plugin> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-changelog-maven-plugin</artifactId> - <version>${log4j-changelog-maven-plugin.version}</version> - <inherited>false</inherited> - <configuration> - <outputDirectory>${project.build.directory}/release-notes</outputDirectory> - <indexTemplates> - <template> - <source>.index.md.ftl</source> - </template> - </indexTemplates> - <changelogTemplates> - <template> - <source>.release-notes.md.ftl</source> - <target>%v.md</target> - </template> - </changelogTemplates> - </configuration> - </plugin> - </plugins> - </build> - </profile> - - <!-- `changelog-release` profile to move `src/changelog/.0.x.x` contents to their associated release directory. - It is manually enabled by users while cutting a release. - See `RELEASING.adoc` for instructions. --> - <profile> - <id>changelog-release</id> - <build> - <defaultGoal>log4j-changelog:release</defaultGoal> - <plugins> - <plugin> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-changelog-maven-plugin</artifactId> - <version>${log4j-changelog-maven-plugin.version}</version> - <inherited>false</inherited> - <configuration> - <releaseVersion>${revision}</releaseVersion> - </configuration> - </plugin> - </plugins> - </build> - </profile> - - <!-- `distribution` profile creating the distribution ZIP containing: - 1. Git-tracked sources - 2. Generated JAR files - 3. Release notes - - This profile must be executed after a successful `package` phase, since we need JARs. - This profile is manually enabled by `.github/workflows/build.yml` while releasing. --> - <profile> - - <id>distribution</id> - - <build> - - <defaultGoal>log4j-changelog:export bsh:run</defaultGoal> - - <plugins> - - <!-- Generate release notes --> - <plugin> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-changelog-maven-plugin</artifactId> - <version>${log4j-changelog-maven-plugin.version}</version> - <configuration> - <outputDirectory>${project.build.directory}/release-notes</outputDirectory> - <indexTemplates> - <template> - <source>.index.md.ftl</source> - </template> - </indexTemplates> - <changelogTemplates> - <template> - <source>.release-notes.md.ftl</source> - <target>%v.md</target> - </template> - </changelogTemplates> - </configuration> - </plugin> - - <!-- Create the distribution ZIP --> - <plugin> - <groupId>com.github.genthaler</groupId> - <artifactId>beanshell-maven-plugin</artifactId> - <version>${beanshell-maven-plugin.version}</version> - <configuration> - <script><![CDATA[import java.io.*; - import java.nio.file.*; - import java.util.*; - import java.util.function.*; - import java.util.stream.*; - import java.util.zip.*; - - import org.eclipse.jgit.dircache.*; - import org.eclipse.jgit.lib.Repository; - import org.eclipse.jgit.storage.file.FileRepositoryBuilder; - - zip(String zipFileName, Map pathByFile) { - OutputStream outputStream = new FileOutputStream(zipFileName); - ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); - try { - for (String file : pathByFile.keySet()) { - Path path = pathByFile.get(file); - ZipEntry zipEntry = new ZipEntry(file); - zipEntry.setTime(0); - zipOutputStream.putNextEntry(zipEntry); - zipOutputStream.write(Files.readAllBytes(path)); - zipOutputStream.closeEntry(); - } - } catch (Exception error) { - // Supplement diagnostics - error.printStackTrace(System.err); - throw error; - } finally { - zipOutputStream.close(); - } - } - - // Find Git-tracked files - SortedMap pathByFile = new TreeMap(); - Repository repo = new FileRepositoryBuilder().readEnvironment().findGitDir().build(); - DirCache repoCache = repo.readDirCache(); - String repoDirectoryParent = repo.getDirectory().getParent(); - for (int repoCacheEntryIndex = 0; repoCacheEntryIndex < repoCache.getEntryCount(); repoCacheEntryIndex++) { - DirCacheEntry repoCacheEntry = repoCache.getEntry(repoCacheEntryIndex); - String repoCacheEntryPath = repoCacheEntry.getPathString(); - pathByFile.put(repoCacheEntryPath, new File(repoDirectoryParent, repoCacheEntryPath).toPath()); - } - - // Create `src.zip` using Git-tracked files - zip("target/src.zip", pathByFile); - System.out.format("Generated source ZIP containing %d files.%n", new Object[]{pathByFile.size()}); - - // Find auxiliary files that will go into the distribution - SortedMap pathByFile = new TreeMap(); - pathByFile.put("src.zip", new File("target/src.zip").toPath()); - pathByFile.put("RELEASE-NOTES.md", new File("target/release-notes/${revision}.md").toPath()); - pathByFile.put("NOTICE.txt", new File("NOTICE.txt").toPath()); - pathByFile.put("LICENSE.txt", new File("LICENSE.txt").toPath()); - - // Find JAR files that will go into the distribution - Stream paths = Files.walk(new File(repoDirectoryParent).toPath(), 8, new FileVisitOption[0]); - int[] jarCount = {0}; - try { - paths.forEach(new Consumer() { - public void accept(Path path) { - File file = path.toFile(); - if (file.getParentFile().getName().equals("target") && - file.getName().matches("^log4j-(.+)-${revision}(-tests)?\\.jar$")) { - pathByFile.put(file.getName(), path); - jarCount[0]++; - } - } - }); - } finally { - paths.close(); - } - - // Check if no JARs are found - if (jarCount[0] == 0) { - System.err.println("Error: Could not find any JARs!"); - System.err.println("Tip: Have you already executed the Maven `package` goal?"); - System.exit(1); - } - - // Create the distribution ZIP - zip("target/dist.zip", pathByFile); - System.out.format("Generated distribution ZIP containing following %d files:%n", new Object[] {pathByFile.size()}); - for (String file : pathByFile.keySet()) { - System.out.println("-> " + file); - }]]></script> - </configuration> - <dependencies> - <dependency> - <groupId>org.eclipse.jgit</groupId> - <artifactId>org.eclipse.jgit</artifactId> - <version>${org.eclipse.jgit.version}</version> - </dependency> - </dependencies> - </plugin> - - </plugins> - - </build> - - </profile> - - <!-- `deploy` profile activating deployment-specific configuration. - It is manually enabled by `.github/workflows/build.yml` while releasing. --> - <profile> - - <id>deploy</id> - - <properties> - <deployAtEnd>true</deployAtEnd> - <installAtEnd>true</installAtEnd> - <skipTests>true</skipTests> - <spotbugs.skip>true</spotbugs.skip> - <spotless.check.skip>true</spotless.check.skip> - </properties> - - <build> - - <defaultGoal>deploy</defaultGoal> - - <plugins> - - <plugin> - <groupId>org.simplify4u.plugins</groupId> - <artifactId>sign-maven-plugin</artifactId> - <version>${sign-maven-plugin.version}</version> - <executions> - <execution> - <goals> - <goal>sign</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - <executions> - <execution> - <id>attach-sources</id> - <goals> - <goal>jar-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - - </plugins> - - </build> - - </profile> - - </profiles> - </project>
