Can Scala maintain a public Scala Steward instance?

I wasn’t 100% sure where to stick this, but figured this forum might be a good place seeing that many of those that define the core Scala teams / orgs / etc are on here. With the recent news of the public Scala Steward instance no longer running (Frank if you’re reading this, thank you again for all your work here :pray:), I was wondering if the Scala Center or some relation to the core Scala team that already has long CI jobs running was also able to pick this up and keep a public instance alive?

Across the board there seems to be support and enthusiasm for this tool, and it plays such a pivotal role in so many open source Scala projects by keeping dependencies up to date. It’d be great if this could be kept alive. While an alternative would be for each organization to host their own, that’s just another thing to manage and set up. Would this at all be possible?

17 Likes

Hey, thank you Chris for raising this question. I agree that having Scala Steward working on public repositories is extremely useful. Let’s see what are the available options to get there.

I already see the following options available today:

  • Use the Scala Steward GitHub Action. Every public project hosted on GitHub can use it for free on the GitHub Action runners. It requires adding a file to your .github/workflows/:

    # This workflow will launch at 00:00 every Sunday
    on:
      schedule:
        - cron: '0 0 * * 0'
    
    name: Launch Scala Steward
    
    jobs:
      scala-steward:
        runs-on: ubuntu-latest
        name: Launch Scala Steward
        steps:
          - name: Launch Scala Steward
            uses: scala-steward-org/scala-steward-action@v2
            with:
              github-token: ${{ secrets.REPO_GITHUB_TOKEN }}
    
  • Use renovate. It is less powerful than Scala Steward because it does not do “Scala-specific” things like applying Scalafix migration rules. But it also updates the dependencies of your GitHub workflows, which Scala Steward does not do.

  • Others?

3 Likes

We (Scala 3 team @ VirtusLab) are looking at options on how to keep the public instance of Scala Steward alive and we will keep you all posted.

19 Likes

As a minor note, if a public instance is revived, it would be in everyone’s best interest to also try to keep the same bot user (scala-steward) if Frank is willing. A lot of automation has hard-coded on that username, and even more importantly, it is specifically allow-listed in public CI/CD services (such as GitHub Actions). Without this allow listing, any attempt to recreate the same functionality would probably trigger an immediate ban due to the way public CI has evolved since its inception.

10 Likes

Can you please share any updates on this? Plenty of projects are waiting for this info :slight_smile:

4 Likes

An update: We have received credentials to the original bot account and we are setting up and testing the new public instance. We want to make sure that it works as expected, so it will probably take a few more days.

14 Likes

We’re happy to announce that we successfully ran the Scala Steward instance using original scala-steward credentials. Currently, we are testing it with few repos that we have ownership of. If you want to help and test scala-steward on your repositories, please let us know by writing e-mail at scala_steward@virtuslab.com.

14 Likes

UPDATE:
Thanks to everybody that already helped us by testing Scala Steward on their repos. Since the instance seems to work correctly, we are going to take the next steps:

  1. We’ve forked the fthomas’ repository containing list of repos that should be updated by scala-steward. It’s available here.
  2. Currently, we run the instance for GitHub repos.
  3. We’re setting the deadline to 5th of July to update the list of repositories in the repos-github.md file. Then, we’re going to use it in our Scala Steward instance.
  4. If you would like to use Scala Steward before 5th of July, you can add your repository to the file with test list: repos.md. The test list will be then merged with production list.

Warning: Scala Steward uses cache to preserve information between runs and remember information about created PRs. Since the cache is lost, there’ll be probably some redundant PRs created for all out-of-date dependencies which were not bumped.

4 Likes

Not everything is lost. I uploaded a copy of my Scala Steward’s workspace to https://github.com/scala-steward-org/repos/blob/main/workspace-2022-06-01.tar.gz

10 Likes

Hi there,
Since Tuesday we’ve run the public instance of Scala Steward. Unfortunately, in one run we got a problem with saving the workspace which resulted in re-opening some PRs. The bug is already fixed and shouldn’t happen again.

5 Likes