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