17 Commits (7c9058a02e20ad256b9da7b13b3f7c3fb8edf23e)

Author SHA1 Message Date
Sayan Nandan 0ee25814ea Enable colored output on CI
This greatly improves readability of the otherwise dull logs
3 years ago
Sayan Nandan 7b26488c38 Ensure that we install the required perl modules 3 years ago
Sayan 3f0fc340c7
Add automated builds for ARM (#179)
* Move arm64 tests into test workflow

* Archive artifacts for arm64

* Fix missing target

* Add upload assets step

* Simplify packaging

* Use caching on ARM runners and remove is_md_file

Since GH now supports `skip ci`, we don't need this anymore

* Save artifacts for ARM64

* Simplify hashing condition

* Fix caching condition

* Use IPv6 for wget

* Don't use https for wget

* Add automatic release for ARM64
3 years ago
Sayan 8bed8c9c2a
Use Makefile for builds (#172)
* Add makefile

* Use makefile for builds

* Fix start_server command on Windows

* Use `&` for backgrounding

Since mingw on Windows provides a bash shell, we can just use this

* Use `cmd` as shell for Windows builds

* Use `start` for backgrounding on Windows

* No need for chmod

* Specify target for server to start up

* Sleep to let the server start up

* Update build docs
3 years ago
Sayan 790558d2c7
Improve reliability, simplicity and recoverability of BGSAVE (#153)
* Create a new file on writing to flock-ed file

This fix is a very important one in two ways. Say we have an user A.
They go ahead and launch skyd. skyd creates a data.bin file. Now A just
deletes the data.bin file for fun. Funny enough, this never causes flock
to error!
Why? Well because the descriptor/handle is still valid and was just
unlinked from the current directory. But this might seem silly since
the user exits with a 'successfully saved notice' only to find that the
file never existed and all of their data was lost. That's bad.
There's a hidden problem in our current approach too, apart from this.
Our writing process begins by truncating the old file and then writing
to it by placing the cursor at 0. Nice, but what if this operation just
crashes. So we lost the current data AND the old data. Not good.

This commit does a better thing: it creates a new temporary file, locks
it before writing and then flushes the current data to the temporary
file. Once that succeeds, it replaces the old data.bin file with the
newly created file.

This solves both the problems mentioned here for us:
1. No more of the silly error
2. If BGSAVE crashes in between, we can be sure that at least the last
data.bin file is in proper shape and not half truncated or so.

This commit further moves the background services into their
own module(s) for easy management.

* Fix CI scripts

Fixes:
1. Our custom runner (drone/.ci.yml) was modified to kill the skyd
process once done since this pipeline is not ephemeral.
2. GHA for some reason ignores any error in the test step and proceeds
to kill the skyd process without erroring. Since GHA runners are
ephemeral, we don't need to do this manually.
3 years ago
Sayan Nandan 8d3d878b81 Build binary before attempting to run it
The background process may or may not complete before the testing begins
3 years ago
Sayan Nandan 34134aa29b Fix using old binary for testing on Windows 3 years ago
Sayan Nandan 53a0082890 Make sure skyd is killed after testing on Windows 3 years ago
Sayan Nandan 6b47279b1b Fix CI script and improve terminal artwork 3 years ago
Sayan Nandan bcca83c7ff Use single thread for all tests 3 years ago
Sayan Nandan 5d617eae84 Start the database server before running the tests 3 years ago
Sayan Nandan 379660f14c
Add testing for new Tier 1 targets (#135)
* Add support for new T1 platforms

This commit adds support for the following Tier-1 (T1) platforms:
- i686-unknown-linux-gnu
- i686-pc-windows-msvc

* Fix channel and add explicit target in cargo test

* Use `target add` to add $matrix.rust target

* Use actions-rs/toolchain to install rust

* Install musl-tools to test musl

* Simplify matrix

* Add 32-bit targets and refactor workflow

* Fix build matrix

* Explicitly specify target in cargo test

* Use rustup to install toolchain

* Install 32 bit tools on Linux

* Remove ports in [49000,50000] on Windows
3 years ago
Sayan Nandan a9f3d082b9
Restore caching on macOS runners
Signed-off-by: Sayan Nandan <nandansayan@outlook.com>
4 years ago
Sayan Nandan d7fbf0e10e
Perl setup is no longer required
As per the runner docs Perl is already installed on the runners.
This is why explicit setup is not required.

Signed-off-by: Sayan Nandan <nandansayan@outlook.com>
4 years ago
Sayan Nandan 5392f27fdd
Improve builds and fix release builds (#105)
* Checkout the PR branch if triggered by a PR

Signed-off-by: Sayan Nandan <nandansayan@outlook.com>

* Use `cmd` as the shell on Windows to fix builds

Signed-off-by: Sayan Nandan <nandansayan@outlook.com>

#104 did this for pushes; this will do it for releases.

* Fix Windows release script

Signed-off-by: Sayan Nandan <nandansayan@outlook.com>

* No need to checkout to head.ref for PRs

Signed-off-by: Sayan Nandan <nandansayan@outlook.com>
4 years ago
Sayan Nandan 2d04a4f841
Enable build skips on PRs
Iff no source files are changed - skip the compute-intensive build
4 years ago
Sayan Nandan 896b04e665
Use separate actions for PR and Push
This will enable us to use automation for builds in the future
With separate jobs for a PR and a push, we can avoid insecure operations
These operations may be triggered by malicious users sending 'bad' PRs
4 years ago