Skip to main content
Topic: Automate releases (Read 2489 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Automate releases

I was thinking about something I think I wrote few days ago somewhere: in the next development cycle, the beta releases should be more frequent, during 1.0 we released just two betas, one in November and one in February, then nothing until the release candidate in June.
I think a "frequent" periodical release of beta versions would be more beneficial to everybody. I'd say at least monthly. I'd prefer every other week, but it's not important at the moment.

Of course releases are time consuming, so more frequent releases require a faster way to create them (or more people having time to create one, but since it's a repetitive task I'd prefer automation :P).

On the Github side it should be somehow simple, the APIs allow to create releases and upload assets:
https://developer.github.com/v3/repos/releases/#create-a-release
https://developer.github.com/v3/repos/releases/#upload-a-release-asset
so, that is good.

The steps to prepare for a release are currently listed at this page:
https://github.com/elkarte/Elkarte/wiki/Preparing-a-release

In an ideal world everything could be automated, except maybe the text of the release announcement because of the topic ids for known issues and release notes[1].

At the moment there is nothing at all, so if anyone wants to pick up the task, I think a php script would be best, probably to run from a CLI.

Well, this is tracked as many other things. :P
Well, if there is a standard text, the ids can be passed as parameters and replaced "on-the-fly".
Bugs creator.
Features destroyer.
Template killer.

Re: Automate releases

Reply #1

I guess rather than a php script, probably a shell script would be better (just because anyway it would need exec and so part of the platform compatibility would be lost or hard to keep anyway).

I guess the ideal command would be:
Code: [Select]
releaseelk.sh 1.1 beta 1
and use the three parameters (1.1, beta and 1) to build anything is necessary (e.g. download file names and repo tags).
I don't think it is so important to branch the beta out of the development branch, so no need to fetch a particular branch, just development.
So, something like:
Code: [Select]
REPO = "http://github.com/Elkarte/elkarte"
BRANCH = "development"

rm -rf ./
git clone $REPO
git checkout $BRANCH
rm -rf ./docs
rm -rf ./tests
rm -rf ./anything_needed

zip I don't remember the command

code to push to the repo both the new tag and the release (as draft?)
Bugs creator.
Features destroyer.
Template killer.

Re: Automate releases

Reply #2

https://github.com/elkarte/Elkarte/pull/2209

Yeah, yeah I know I mixed up things... xD
Well, this is the basics: clone, cleanp and pack, but at least it's a start!
Bugs creator.
Features destroyer.
Template killer.