Releases: codingchili/zapperfly-asm
Make it less broken
Minor bug fixes release
- When running the command to add users, the password was not being saved.
- Commandline was not parsed correctly for unix / docker builds.
- Use absolute paths when mounting a volume in docker. (support newer docker version)
- Logging events are now lowercase separated with dot, example: 'buildComplete' -> 'build.complete'.
Usability
New features in 1.1.0
- support for plugins.
- new plugin: update bitbucket with build status.
- new plugin: notifyCommit API that matches the jenkins plugin.
- now displaying the commit author on build cards.
- support for cancelling builds.
- support for scheduling builds from the logger.
- improved log scrolling: pauses auto scroll when not at scrollTop
- now displaying the commit author on build cards.
- remembers the login token across page reloads.
- server side filters to filter on repository and branch.
- client side filters to filter on author, commit message, etc.
- added hot-linking to builds and a copy url to clipboard feature.
- no longer need a repo/branch to run shell scripts.
- display which user that scheduled a build in the queue.
- possible to setup multiple configurations for a single branch.
- dependency upgrade, core 1.0.38.
Smallbugs
Some small bugs from the last release, now fixed.
- #46 use correct content-type for build script reference to allow double ampersand.
- #43 the build log does not work with the time offset: changed offset interpretation from int to long.
- #42 changed path to default build directory to be relative: to support gitbash builds on default settings.
Reduced clone depth from 5 -> 1.
I had to rebuild this release locally because jitpack is out of order and serves old builds, if it decides to serve any at all.
Authentication
- added a login dialog and logout button.
- role based access control: read/start/configure.
- commandline to add new users to a running system.
- allow cloning with ssh and using basic authentication in repo url.
- added this changelog to the about dialog.
- adjusted the size of buttons to be more appealing.
- renamed the startup script from run -> zapperfly to avoid "run --start".
Containers
Changes and improvements
- #12 now support for building in containers!
- #33 use a hazelcast queue to schedule builds over the cluster.
- #34 use a hazelcast list to store builds logs.
- #36 added input validation for build configuration.
- #37 split the queue list API from the build list API.
- #38 support newline in logs and improved grouping of log messages.
- #31 support building without passing the buildscript over the shell (uses a file for docker builds)
- bug-fix #32 - full build output was not captured.
Changed to a hazelcast list because it is not a partitioned data structure. When retrieving build logs it makes more sense to keep all entries on a single partition. And removing a list is a single operation. Did I mention lists are also sorted?
Changed to a hazelcast queue for scheduling jobs, because the naive solution to store them in maps resulted in executors stealing eachothers builds. The second approach with locks for taking builds was contentious and prone to starvation because the locks were not released consistently. In with the queue, its perfect for the job.
Docker support is here, we dump the buildscript into a volume and mount it in the container. This way we don't need to pass any insecure scripts over the commandline. We now use regexes to check that repository urls, branches and docker image names does not execute stuff on our commandline. Well, there is no option to disable non container builds, so scripts can be executed on the host machine simply by not providing a docker image. hehe.
Can you use this for development? probably, but its lacking some features. And ONLY use it on a secure LAN.
- you cannot cancel a build.
- there is no authentication.
- running outside of containers means that the buildscript executes ON THE HOST SYSTEM.
- there is currently no way to disable non-container builds.
- no way to download build artifacts. (you can solve this by sharing the build directory over FTP)
Progress
Changes
- added a distributed hazelcast semaphore used when taking jobs from the queue.
- mark all builds attached to an instance as failed if the owning instance goes down.
- show executors cpu/memory usage and "last seen" when instance goes offline.
- improved API latency worst case scenario from 250ms -> 5ms. (cluster routing)
- added the ability to remove builds that are no longer running from history.
- refactored the API into 'builds' and 'configuration'.
- improved the UI, new color theme, various fixes and improvements including mobile/PWA
- fixed an issue with autoclean not deleting readonly files: now adds write before deleting.
- fixed styling issues with paper-input and black text.
- fixed styling issues with paper-dialogs, the build log and checkboxes..
Not included in this release:
- docker support
- downloading build artifacts
- cancelling queued/in progress builds.
- changing instance settings from the web ui/api
- simple password based authentication.
First version
Features implemented
- schedule builds across the cluster (clone + build)
- website (run with --website param) and API.
- real-time logging output on the website.
- support for setting instance capacity and name.
- support for grouping instances with --group parameter.
- configure builds by git repository url and branches.
- clustered build data and logs.
- full mobile support and may be added to homescreen as a progressive web app.