Maintaining your own development channel

With AMO announcing the shutdown of the beta channel it’s time to find out how to run your own channel. Well, essentially, what the best approach for generating the update json is.

Of course you could just update it every time by hand. But that sounds rather tedious. Anyone wrote a tool for that?

I just pushed a small node.js script to add an entry to the update.json manifest given a signed XPI. It’s here.

Right now, the biggest problem to automate a developer-hosted beta channel is that the signing of the add-on package (required to distribute the extension) must be done manually on amo. The current add-on signing API fails if the extension is available publicly on amo, which is generally the case.

I had a look at this signing API but it seems the/some changes are to be made on the server side. I hope someone at Mozilla can take care of this before beta channels are removed from amo.

2 Likes

I got it working on my side with a custom Python script:

I still need to keep improving it, for example ability to rely on environment variables for the id/secret, auto-committing updates.json to Github, etc.

One (easily resolved) quirk I had is that there is a mistake in the signing API documentation: channel must be part of form data, not the URI (fyi @jorgev ).

I am actually happy of the beta channel being discontinued, because this forced me into finding a solution to self-host, and now using the script approach makes publishing a beta version quite less of a burden compared to having to push manually on AMO as it used to be.

2 Likes

Are there issues filed? If we don’t know about it, we can’t fix it.

Not sure if this is a bug or the docs are wrong. Ping @kumar303

I am running a custom version of web-ext to generate my beta releases. I submitted the PR for having a channel parameter a couple of weeks ago. Looking back at this PR on github, i realize Kumar was expecting me to do something in order to merge the PR. I’ll have a look at that soon.

I also use this node script to update the custom update.json file for the betas.