Releases: Justintime50/harvey
Releases · Justintime50/harvey
v1.1.0
- Adds support for Python 3.12
- Bumps all dependencies
- Adds a healthcheck to the nginx Docker container
- Returns
system_lock
bool on retrieving locks - Prints deployment log to the error logger if
log_level
is set toDEBUG
- Raises a
HarveyError
on deployment fail instead ofsys.exit(1)
, removes redundantsys.exit(0)
on success- Prints complete error instead of unhelpful "deployment failed" message
- Captures Slack errors via Sentry but no longer raises an exception to ensure builds continue even if there is a problem with message delivery
- Adds
py-call-uwsgi-fork-hooks
flag to assist threading with uwsgi and sentry (closes #83)
v1.0.3
- Swaps the deprecated
slackclient
for the newslack_sdk
, no user impact expected - Locks max Python version to 3.11 as
uwsgi
is not yet compatible with the new Python 3.12
v1.0.2
v1.0.1
- Fixes a bug where
page_size
for the/projects
endpoint wasn't respected
v1.0.0
- Drops support for Python 3.7
- Adds
USE_HTTPS_AUTH
option to use HTTPS URLs instead of the default SSH URLs - Use
docker compose version
invocation on startup to verify version instead of olderdocker-compose --version
now that v1 is deprecated - Unify the version of the released package and the version in the config under a single variable (this has drifted often in the past)
- Removes the
raise_error
parameter ofkill_deployment
since killing a deployment will inherently raise an unhandled exception when we exit with a status of 1.- Corrects the status of
succeed_deployment
from 1 to 0
- Corrects the status of
- Properly expands
harvey_path
.env
files are now sourced from both the relative root of the project and the$HARVEY_PATH
to allow for greater flexibility- Bump dependencies
- Corrects and clarifies all documentation
- Drops ability to install from Pip (no longer release to PyPi) since the invocation hasn't worked for some time and needs local commands
v0.24.0
- Adds
runtime
to each deployment attempt's data structure so you can track that over time - Threads via Harvey are now named (after a project) and can be retrieved via the new
/threads
endpoint - Fixes a bug where subprocess errors would get clobbered, now output from subprocesses should be printed as a string instead of bytes or being stripped out
- Overhauls the deployment logs to show more or less information depending on if you are running in debug mode or not
- Unifies message structure when sending to Slack, stdout/stderr, and storing to database
- Properly sorts attempts in desc order by
timestamp
so clients don't need to - Fix a bug where deploys were miscategorized as success when they were actually a failure
v0.23.0
- Stores webhooks to the database so we can use them later for things like redeploying or reference
- Adds a new
/projects/<project_name>/redeploy
endpoint that allows you to redeploy a project with the local webhook data - Fixes the long-running and multi-bug issues related to workers, connections, and timeouts stopping harvey from running
- Simplifies the uwsgi worker config greatly in the hopes to fix thread locking issues (closes #72)
- Fixes connections getting refused after ~24 hours of uptime due to using the http socket instead of the uwsgi socket
- Patches segfault on macOS by not using proxies
- Adjusts various timeouts and limits across the board to assist with edge-case connection and errors related to the server
- Unifies
git_timeout
anddeploy_timeout
to newoperation_timeout
with a default of 300 seconds.- Lowers Docker API timeout from 30 seconds to 10 seconds
- Deployments now store the
log
,timestamp
andstatus
keys inside anattempts
array allowing for multiple saved records of each attempt of a deploy. This is helpful when a commit is redeployed later ensuring that the information from every attempt at deploying a specific commit are retained. Previously, you would only have the most recent details available because the log, status, and timestamp were overridden on each new deploy of the same commit. There is still atimestamp
at the root level of deployments that will update to the most recent attempt's timestamp (closes #74) - Overhauls logging
- Adjusts log sizes from 200kb to 2mb
- Logs now delete on a uWSGI cron each day if they are older than 14 days
- We no longer log harvey and uwsgi logs separately since they were both going into the uwsgi logs (closes #78)
- Bumps all dependencies
v0.22.1
- Adds a try/catch block to the spawned thread in an attempt to kill off failed deployments
- Moves database logic to adopt the
repos
pattern to separate their logic from the rest of the service - Adds a script to fail
In-Progress
deployments - Changes the verbose webhook body debug logger to an info logger that only says which repos the webhook originated from
- Log 500 error messages correctly when an endpoint is hit (previously some errors weren't ever bubbling up and were suppressed or lost)
- Don't throw an error when a lock cannot be looked up for a project, log instead (allows for first-time deploys)
- Various other bug fixes and improvements
v0.22.0
- API has more unified error handling for 5xx error types
- Introduced new
HarveyError
and cleaned up various error handling throughout the app. All messages should now properly get logged when a deployment gets killed, errors raised when Sentries need to be triggered, and various log levels were corrected - Healthchecks of containers now check when the container was started to ensure that not only are they running, but that they restarted within the last 60 seconds as a part of the deploy
- Fixed a bug where containers may not properly recreate when their configs or images don't differ from the last deploy
- If a project's lock status cannot be determined, we now kill the process instead of continuing and logging only to ensure we don't steamroll a previous deployment
- Harvey can now distinguish between a system lock and a user lock allowing for user-locked deployments to stay that way even if a deployment fails
- Wraps
store_deployment_details
in a try/except to log out errors with saving details to the DB - Drops default deployment timeout from 30 minutes to 10 minutes
- Various other improvements and fixes
v0.21.0
- Bumps
uwsgi
from2.0.20
to2.0.21
unlocking Python 3.10 and 3.11 support - Bumps nginx version
- Changes from process/threads concurrency to dynamic worker concurrency with uwsgi
- Added timeouts and worker kill commands so Harvey will canabolize itself instead of the OS in the case of long running workers or too many requests
- Adds
total_count
to collection responses