Experimenting with new bots

In the upcoming core dev sprint, I plan to work on improving the experience of contributing. A couple of the ideas I have would entail writing one or two new bots or periodic tasks.

I’ll write about the specific ideas elsewhere soon, and of course will discuss these here before actually implementing them.

But I thought to ask, is there anything I should set up in advance in order to be able to experient quickly with something like this? Ask GitHub for a token with higher rate limits, perhaps? Get access to a Heroku account for testing which I won’t have to pay or if pocket for? Etc.

I honestly would not bother with a bot at this point and instead write a GitHub Action.They are much easier to service since their execution is entirely public. They are also easier to maintain as there isn’t a need to stand up an e.g. Heroku instance. It also means we only have a singular quota to manage (execution time of all GitHub Actions workflow runs) rather than multiple quotas to care about.

2 Likes

Thanks Brett! It’s important to know that GitHub Actions seems to be the desired future platform for our automation of this sort. I’ll read up about it as I haven’t used it before, but it seems similar enough to other CI platforms that I expect things to go smoothly enough.

Anything I should know in terms of developing GitHub Actions aimed at running on the python/cpython repo, such as how to test them, obtaining proper tokens, etc., that I won’t find by reading the normal docs? I.e. anything specific to our setup?

It is as well as being similar to how GitHub bots work (i.e. same trigger payloads, etc.).

Since it’s just GitHub infrastructure you can actually test on your own fork! :slight_smile:

A write token is automatically provided via the secrets.GITHUB_TOKEN secret. :grin:

Nope, as no one has taken the time to move Bedevere over. Right now we just use GitHub Actions for PR checks, so there’s nothing special here ATM, so it’s going to be slightly uncharted territory in terms of how we want to structure or store any scripts, etc.

1 Like