Git Product home page Git Product logo

Comments (10)

mdedetrich avatar mdedetrich commented on July 22, 2024 2

Afaik its not that sbt-typelevel-ci-release is more maintained but rather it contains additional typelevel'isms related to their org's standards for releasing software.

In any case I was talking casually about these sbt release plugins to other Apache people and there appeared to be some hesitation, one given example is whether its proper in the eyes of Apache Security to store keys as secrets on github (which would be necessary for sbt-ci-reease/sbt-typelevel-ci-release). On the surface sbt-release seems to be closer to the Apache way of releasing things and most importantly isn't tied to sonatype.

As an example, since the steps in sbt-release can be completely customized, its possible to put the "copy source code into Apache's SVN repo" as part of the release step (at least in Apache's view, this is the only thing that constitutes as an actual release. Everything additional such as uploading jar's to maven is just for user convenience).

from pekko.

mdedetrich avatar mdedetrich commented on July 22, 2024

Since the core pekko build is really complicated, we could use #92 as a test bed for creating an automated release (its going to be needed at some point anyways). Once its figured out and working for sbt-paradox-pekko its going to be a lot simpler to then just add it into pekko.

In regards to the plugins to automate a release, the most ideal would be to use sbt-ci-release however it does seem to be tied to sonatype, the nice thing about sbt-ci-release is it completely automates the process, a release is triggered just be pushing a git tag but this may be too modern for Apache and might go against some of their established processes. Another option is sbt-release which is a bit more manual/old-school however it allows you to customize the release process as you want and then you would just do an sbt release to trigger a release. Also as a bonus, @jrudolph has actually contributed to sbt-release so we have some familiarity with it.

from pekko.

pjfanning avatar pjfanning commented on July 22, 2024

I use sbt-typelevel-ci-release - which appears to be a more active copy of sbt-ci-release.

from pekko.

mdedetrich avatar mdedetrich commented on July 22, 2024

This PR is related to using sbt-ci-release to do release management #129 . In summary it may be possible to use sbt-ci-release by just changing the sonatype host to repository.apache.org, hopefully the Apache Nexus repo is close enough to OS sonatype that they accept the same way of publishing (i.e. bundle releases may not work with Apache Nexus, we will have to find out).

If not then we will have to use something like sbt-release which isn't hardcoded to use sbt-sonatype.

from pekko.

jrudolph avatar jrudolph commented on July 22, 2024
  • we don't use Sonatype

Maybe we should clarify what a release is and what the desired outcome of doing a release is. How do artifacts end up on Maven Central if not going through Sonatype? Let's start listing all the steps necessary to do different kinds of releases (snapshots, RCs, and GA) and only then start about automating any of it. I imagine this is at least partly about what Apache considers a release? If yes, then we should clarify what it entails.

I would consider sbt-ci-release to be a tool to work with sonatype. If we don't go through sonatype (or a process very similar to sonatype with staging repos etc), we probably should not use it. Afaik, the main reason it was created was that sonatype (Nexus) needs some manual handholding to finally publish something to Maven Central.

AFAIK sbt-release is a plugin to organize a release-process that has multiple steps but is more abstract than publishing to a repository.

If this is just about pushing artifacts to a maven-compatible repository, we might not need any plugins for just that.

from pekko.

mdedetrich avatar mdedetrich commented on July 22, 2024

One of the nice things about using sbt-release instead of sbt-ci-release is that as you just pointed out, you can customize it to do whatever you want. For example even though we publish generated library jars to Apache's Nexus repo, this is not considered an official. An official release involves copying the sources over using rsync, so we can theoritically use sbt-publish-rsync or fork it for Apache's needs, and then we can can completely automate publishing both to Nexus and making an official Apache release.

For now I am just trying to get snapshots working, so I don't see a problem to see if we can adjust sbt-ci-release to work with Apache's Nexus repo however I am still personally leaning to using sbt-release for reasons stated earlier.

from pekko.

jrudolph avatar jrudolph commented on July 22, 2024

I created #130 to try to collect an overview over all the steps that are needed. This ticket would be a subticket of the complete process.

from pekko.

pjfanning avatar pjfanning commented on July 22, 2024

@jrudolph repository.apache.org artifacts get synched to Maven Central - but I think only when you do full releases. Snapshots and staged (pre-release) artifacts are probably only accessible by adding an sbt resolver that has the repository.apache.org url set up.

from pekko.

mdedetrich avatar mdedetrich commented on July 22, 2024

@jrudolph repository.apache.org artifacts get synched to Maven Central - but I think only when you do full releases. Snapshots and staged (pre-release) artifacts are probably only accessible by adding an sbt resolver that has the repository.apache.org url set up.

True but its also nothing special, at least for sbt even the OS Sonatype snapshot repository needs to be manually added as a resolver (i.e. its not there by default).

from pekko.

jrudolph avatar jrudolph commented on July 22, 2024

Yes, and that's totally fine and also pretty much wanted (also according to https://infra.apache.org/release-distribution.html#unreleased which explicitly require "must not be distributed through channels which encourage use by anyone outside the project development community").

from pekko.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.