-
Notifications
You must be signed in to change notification settings - Fork 63
Build Bots
The automated build process has since v.2.15.0 changed to Github Actions (see #285), which not only allows us to target most major architectures, but also automates the release process.
Creating a release (once the Github Actions has been enabled) is as simple as creating a new tag with the desired version:
-
git tag -a -m "Release v2.15.0"
. -
git push --tags
. - The build process will be automatically triggered and the artifacts will be uploaded once the build process finishes.
- Windows >= 10 (x86_64 / i386)
- Linux >= 3.10, glibc >= 2.17 OR musl >= 1.0 (x86_64 / i386 / aarch64)
- Debian 8+
- Ubuntu 13.10+
- Fedora 19+
- OSX 13+ (x86_64 / aarch64)
- Windows >= 8 (x86_64 / i386)
- OSX 11+ (x86_64 / aarch64)
- FreeBSD 12+
The following approach was the build system used before v2.15.0 and is preserved here for historical reasons.
Luvi is currently built using a semi-automated set of build bots in @creationix's office.
If you wish to setup your own, the process is fairly simple.
- Install ninja onto your system if it's not windows. It's
ninja-build
on some debian based systems. Also you'll probably need GCC or clang, whichever is native to your platform.- If it's windows, install the community edition of visual studio and make sure to get the version made for desktop apps as that's the one that comes with a C compiler.
- Install cmake. This is pretty easy cross-platform
- Install github-release. They have binaries for most platforms, but for others, you need to first install go and then build it using go. On raspberry PIs I use pre-built go binaries.
- Do a recursive clone of luvi and run
git describe
in the checkout to make sure you have the version you expect to be building.- Create en environment variable
GITHUB_TOKEN
that contains an api token capable of pushing to the luvi project. (Tokens can be created at https://github.com/settings/applications/new)- If using ninja, create an environment variable
GENERATOR
that holds the stringNinja
.Then to make a release:
- do the normal changelog and push an annotated and signed tag to the luvi repo.
- Go to the luvi releases page and edit the release. I copy the text from the tag containing the changelog and paste it into the description of the release you're creating.
- run
make publish-src
andmake publish
from one machine (usually my macbook that's also building the darwin binary)- then run
make publish
on the other bots (make sure togit pull
andgit describe
to make sure you're building what you expect to be building). On some systems like solaris or freebsd, you'll needgmake publish
instead ofmake publish
.Occasionally github will timeout while uploading the binaries, especially the larger sized ones with debug symbols. If this happens, edit your release again on the github page. Delete the failed uploads and save the changes to the release. Then you can retry the publish. Running
make publish-tiny
ormake publish-regular
directly will skipmake clean
and in the case of a failed upload, will jump right back to uploading the binary again. Since this usually happens on the larger binary, I highly recommend this route.Currently @creationix builds every luvit release on the following platforms. The desktop class machines will finish the publish in under 10 minutes, but armv6 on the older PI will take up to an hour.
- Windows 8.1 amd64
- Ubuntu 14.04 x86_64
- Ubuntu 14.04 i686
- OSX 10.10 x86_64
- Raspbian armv6l (raspberry pi A+)
- Raspbian armv7l (raspberry pi 2 B+)
- FreeBSD 10.1 amd64