This sounds amazing! Thanks for championing this effort! For signing, there’s 
some project out there that lets you use OIDC for signing things and keeping a 
sort of certificate transparency log so that you can verify that not only was 
an artifact signed by a valid signature, but it’s also done by the expected key 
for a particular release. See https://www.sigstore.dev/ for details. I’m not 
sure if it works with GPG keys or Maven or anything, but it could be a useful 
basis for further release automation in the future (even if it’s something more 
custom to the ASF).
—
Matt Sicker

> On Dec 28, 2022, at 14:42, Volkan Yazıcı <vol...@yazi.ci> wrote:
> 
> Hello,
> 
> I want to share some updates from my side on what I have been working on
> for the last couple of months. In particular, I expect certain changes to
> have an ASF-wide impact! Sounds interesting? Continue reading.
> 
> *What is up with `maven-changes-plugin`?*
> 
> The current `site` phase takes ages to complete. This significantly hinders
> releases and more frequent website updates. The main culprit is `site`
> phase plugins need to be executed for 50+ modules. As my investigation
> turned out, we can actually either drop or replace all such plugins, except
> one: `maven-changes-plugin`, that is used to generate the changelog from
> `changes.xml`. `maven-changes-plugin` is also a major source of
> merge-conflicts in between feature branches and PRs, since they all need to
> touch to the same file: `changes.xml`.
> 
> *Is it only about overhauling the `site` phase?*
> 
> No. As we agreed on, we want to migrate the issue tracking from JIRA to
> GitHub Issues. `maven-changes-plugin` blocks us there too, since it only
> supports a single issue tracking system.
> 
> *Enter `log4j-changelog`*
> 
> I have written simple Java command line applications to perform the
> following tasks:
> 
>   1. Populate
>   `src/site/changelog/<releaseVersion>/<issueId>_<description>.xml` files
>   from `changes.xml`
>   2. Generate AsciiDoc-formatted changelog files from the populated
>   `src/site/changelog`
>   3. Make `src/site/changelog` ready before a release
> 
> These technical tools will not only help us to replace
> `maven-changes-plugin`, support multiple issue trackers, and enable great
> simplification of the `site` phase, due to its one-changelog-file-per-issue
> convention, they will make changelog merge conflicts a thing of the past
> too!
> 
> Okay, great! Since the `maven-changes-plugin` successor is there, what are
> we exactly waiting for?
> 
> *Enter `log4j-tools`*
> 
> I have implemented `log4j-changelog` as a not-deployed Log4j module, though
> Ralph insisted on not having this within Log4j to make it available for
> other Log4j projects and since it needs to be shared by (and hence, sync'ed
> in between) `release-2.x` and `master` branches. He proposed that we host
> this in `log4j-tools` <https://github.com/apache/logging-log4j-tools>.
> Since `log4j-tools` repository never had a release before, I let my
> imagination go wild there:
> 
>   - Adopted the Maven-recommended way of setting up a BOM:
>   `logging-parent` parents `log4j-bom`, which parents `log4j-parent`, which
>   parents all other modules. There the effective POM of `log4j-bom` is
>   stripped-down from its parent and all unnecessary weight via
>   `flatten-maven-plugin` voodoo.
>   - Switched to CI-friendly Maven versioning
>   <https://maven.apache.org/maven-ci-friendly.html>
>   - Configured GitHub Actions to make releases!
> 
> (As you might guess, if experiment succeeds, I will port all these fancy
> stuff to Log4j too.)
> 
> *Releasing... via GitHub Actions!?!*
> 
> ASF project artifacts are required to be signed and up until now that has
> **always** been performed manually by release maintainers. Releasing **and
> signing** artifacts in a fully-automated fashion in CI... "Surely You're
> Joking, Mr. Feynman!" But I am not! I have shared a technical
> implementation proposal in `members@`, got approval from ASF Security Team
> head Mark J. Cox
> <https://lists.apache.org/thread/t1fbn11m70sy9df86xgzzp0fllg38p9q>, and now
> I am waiting for INFRA-23996
> <https://issues.apache.org/jira/browse/INFRA-23996> to be implemented!
> 
> What does this effectively mean? To the best of my knowledge, *`log4j-tools`
> will be the first ASF project ever that is released via CI!* This will
> enable various release automation enhancements, not to mention the software
> supply chain traceability it will bring as well.
> 
> *Where are we now?*
> 
> Once INFRA-23996 <https://issues.apache.org/jira/browse/INFRA-23996> is
> implemented and `log4j-tools` (containing `log4j-changelog`) is released,
> the following PR train will be merged:
> 
>   - #1145 <https://github.com/apache/logging-log4j2/pull/1145> – replace
>   `maven-changes-plugin` with `log4j-changelog`
>   - #1166 <https://github.com/apache/logging-log4j2/pull/1166> – simplify
>   `site` goal (`./mvnw site` takes ~30 seconds!)
>   - #1172 <https://github.com/apache/logging-log4j2/pull/1172> – update
>   sources, docs, links, etc. to reflect the migration from JIRA to GitHub
>   Issues
> 
> *What are we waiting for?*
> 
> We *_can_* release `log4j-tools` without INFRA-23996
> <https://issues.apache.org/jira/browse/INFRA-23996>, the old school way,
> i.e., via running `./mvnw deploy` from a personal laptop. That said, I
> believe releasing `log4j-tools` via CI will have a way bigger impact beyond
> the scope of Log4j, and `log4j-tools` constitutes a great candidate for
> such an experiment. We are all set: `log4j-tools` GitHub Actions workflows
> <https://github.com/apache/logging-log4j-tools/blob/master/.github/workflows/build.yml>
> are ready to make an automated release. Infra team has indicated in
> INFRA-23996 <https://issues.apache.org/jira/browse/INFRA-23996> that they
> will implement it in a couple of days. Given how close we are to an
> automated release, I will wait for my grand infra revamp scheme to unfold.

Reply via email to