Our release process is fairly complex since we do a lot more than just sources. We also do convenience binaries that are published to maven, RPM and Windows installers, documentation, publishing to dist.apache and the daffodil site, creating signatures, etc. It basically automates about 90% of everything we've found we need to do when building release candidate.

It's fairly complex, but the steps are pretty thoroughly documented here:

  https://cwiki.apache.org/confluence/display/DAFFODIL/Release+Workflow

The automation of the release process is done with a container here:

  https://github.com/apache/daffodil/tree/main/containers/release-candidate

We use this container to avoid improve reproducibility and use a known good environment.

This container checks out the code from github, builds all the release artifacts and pushes them where necessary. It also includes a --dry-run option to skip pushing things out.

Inside that container, to build the source tarball we use git archive:


https://github.com/apache/daffodil/blob/main/containers/release-candidate/src/daffodil-release-candidate#L248

Most of the logic to build the binary rpm/msi is done by the sbt-native-packager sbt plugin:

  https://github.com/sbt/sbt-native-packager

And most of the native packager configuration is done here:

  https://github.com/apache/daffodil/blob/main/daffodil-cli/build.sbt

And here's the sbt command we use to actually do a lot of the work:


https://github.com/apache/daffodil/blob/main/containers/release-candidate/src/daffodil-release-candidate#L258-L270

There's definitely alot there that is specific to Daffodil, but a good chunk of it is generic to any Apache project. If there's interest in trying to generalize it to work with pekko, I'm happy to help out.





On 2023-02-08 11:32 AM, Matthew Benedict de Detrich wrote:
Hello Daffodil community,

I am coming from Apache Pekko (https://github.com/apache/incubator-pekko/)
community, which is an Apache Incubator project that is a result of an open
source Akka fork. Since we are part of the incubator, we are undergoing the
standard procedures/process for creating an Apache release and I noticed
that Daffodil happens to be one of the few Apache TLP projects written in
Scala that also uses sbt as a build tool, the same with Pekko.

The Pekko community is prototyping a plugin called sbt-source-dist (see
https://github.com/pjfanning/sbt-source-dist) whose goal is to generate the
source packages required for an Apache release and I was wondering if there
is an opportunity for cross collaboration (also learnings from our side on
possible alternatives for generating the source package)?

Currently the basic functionality of generating the zip/tar source packages
in sbt-source-dist is working however there are additional improvements
that can be done (i.e. https://github.com/pjfanning/sbt-source-dist/issues/1
)

Regards

Reply via email to