We scripted a lot of tasks used mostly for developing into the makefile. This documents explains what taks are available and what they do.
These tasks are automatically run in our CI every time someone pushes to master or you update a pull request:
Clears all builds and binaries.
Runs all tests in Vikunja.
Format the code
Formats all source code using
Checks if the code needs to be formatted. Fails if it does.
vikunja-binary in the root directory of the repo for the platform it is run on.
Statically compile all templates into the binary
This generates static code with all templates, meaning no template need to be referenced at runtime.
Compress the built binary
Go binaries are very big. To make the vikunja binary smaller, we can compress it using upx.
Builds binaries for all platforms and zips them with a copy of the
All built zip files are stored into
dist/zips/. Binaries are stored in
binaries bundled with
templates are stored in
All cross-platform binaries built using this series of commands are built with the help of xgo. The make command will automatically install the binary to be able to use it.
make release is actually just a shortcut to execute
make release-dirs release-windows release-linux release-darwin release-copy release-check release-os-package release-zip.
release-dirscreates all directories needed
release-darwinexecute xgo to build for their respective platforms
release-copybundles binaries with a copy of
templates/to then be zipped
release-checkcreates sha256 checksums for each binary which will be included in the zip file
release-os-packagebundles a binary with a copy of the
sha256checksum file, a sample
config.ymland a copy of the license in a folder for each architecture
release-compresscompresses all build binaries, see
release-zipmakes a zip file for the files created by
Build debian packages
Will build a
.deb package into the current folder. You need to have fpm installed to be able to do this.
Make a debian repo
Takes an already built debian package and creates a debian repo structure around it.
Used to be run inside a docker container in the CI process when releasing.
Generate swagger definitions from code comments
Generates swagger definitions from the comments in the code.
Check if swagger generation is needed
This command is currently more an experiment, use it with caution. It may bring up wrong results.
misspell-check: Checks for commonly misspelled words
ineffassign-check: Checks for ineffectual assignments in the code using ineffassign.
gocyclo-check: Calculates cyclomatic complexities of functions using gocyclo.
static-check: Analyzes the code for bugs, improvements and more using staticcheck.
gosec-check: Inspects source code for security problems by scanning the Go AST using the gosec tool.
goconst-check: Finds repeated strings that could be replaced by a constant using goconst.