The lightweight Docker Compose deployment runner.
MIT License
Bot releases are hidden (Show)
system_lock
bool on retrieving lockslog_level
is set to DEBUG
HarveyError
on deployment fail instead of sys.exit(1)
, removes redundant sys.exit(0)
on success
py-call-uwsgi-fork-hooks
flag to assist threading with uwsgi and sentry (closes #83)Published by Justintime50 12 months ago
slackclient
for the new slack_sdk
, no user impact expecteduwsgi
is not yet compatible with the new Python 3.12Published by Justintime50 about 1 year ago
Published by Justintime50 about 1 year ago
page_size
for the /projects
endpoint wasn't respectedPublished by Justintime50 about 1 year ago
USE_HTTPS_AUTH
option to use HTTPS URLs instead of the default SSH URLsdocker compose version
invocation on startup to verify version instead of older docker-compose --version
now that v1 is deprecatedraise_error
parameter of kill_deployment
since killing a deployment will inherently raise an unhandled exception when we exit with a status of 1.
succeed_deployment
from 1 to 0harvey_path
.env
files are now sourced from both the relative root of the project and the $HARVEY_PATH
to allow for greater flexibilityPublished by Justintime50 over 1 year ago
runtime
to each deployment attempt's data structure so you can track that over time/threads
endpointtimestamp
so clients don't need toPublished by Justintime50 over 1 year ago
/projects/<project_name>/redeploy
endpoint that allows you to redeploy a project with the local webhook datagit_timeout
and deploy_timeout
to new operation_timeout
with a default of 300 seconds.
log
, timestamp
and status
keys inside an attempts
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 a timestamp
at the root level of deployments that will update to the most recent attempt's timestamp (closes #74)Published by Justintime50 almost 2 years ago
repos
pattern to separate their logic from the rest of the serviceIn-Progress
deploymentsPublished by Justintime50 almost 2 years ago
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 correctedstore_deployment_details
in a try/except to log out errors with saving details to the DBPublished by Justintime50 almost 2 years ago
uwsgi
from 2.0.20
to 2.0.21
unlocking Python 3.10 and 3.11 supporttotal_count
to collection responsesPublished by Justintime50 about 2 years ago
sha1
webhook secrets from GitHub to sha256
for increased security and finally adds unit tests for the validate_webhook_secret
functionPublished by Justintime50 over 2 years ago
gunicorn
for uwsgi
for better performance. This switch also fixes the concurrency deadlock in productiondeployment_type
passed was valid and fails if notPublished by Justintime50 over 2 years ago
harvey-ci
to harvey-cd
to better match the nature of the applicationutils/consolidate_sqlite_databases.py
script which will migrate and consolidate the old database(s) content to the single unified file)Published by Justintime50 over 2 years ago
pipeline
to deployment
to unify the language used throughout the project and avoid confusionpipeline
key has been renamed to deployment_type
in the webhook data. A default of deploy
has been set where previously there was no default/pipelines/start
endpoint is now called /deploy
/pipeline
endpoints have been renamed /deployment
/locks
, /locks/{project_name}
, /projects/{project_name}/lock
, and /projects/{project_name}/unlock
endpointssentry
integrationlock
functionality to its own modulePublished by Justintime50 over 2 years ago
harvey.json
file for each project to .harvey.yml
(expected fields/values remain the same)PAGINATION_LIMIT
env var to allow customizationHARVEY_PATH
, GIT_TIMEOUT
, DEPLPOY_TIMEOUT
, and DEPLOY_ON_TAG
env vars for customization404
s at the API levelPublished by Justintime50 over 2 years ago
docker compose
invocation over older docker-compose
docker compose
commands are run simultaneously for a single project (closes #58)~/harvey/projects
instead of locally to harvey/projects
~/harvey/project_logs
instead of locally to harvey/logs
docker-compose.yml
file present
yml
or yaml
os.path.join()
)utc
timePublished by Justintime50 almost 3 years ago
data
field in the webhook instead of the default harvey.json
configuration file kept in the repo (either are now options)pipelines
and stages
modules were consolidated into pipelines
now that the testing functionality has been removedfilter webhook
functionality as it was prohibitively expensive to do correctly due to the vast number of IPs to guard againstdocker
Python SDK instead of hitting raw socket endpoints (closes #49)gunicorn
for production deployments instead of the development Flask servercompose
key to prod_compose
which now accepts a boolean. We no longer support custom flags to the compose endpoint/compose
endpoint which has been replaced with the /start
endpointhealthcheck
key on the config which accepts an array of container names to check for when deploying. Harvey will attempt to run healthchecks against these containers and retry a few times if they are not yet running. The pipeline will only show as success if we can only get a good healthcheck from the list of containers provided. This new option now allows healthchecks to be run against all containers in the stack instead of the base app alone (great for adding databases, caches, and other containers you may have)Published by Justintime50 about 3 years ago
Docker Compose
deployment platform (closes #9, closes #15, closes #19, closes #20, closes #22, closes #24, closes #28, closes #44)APP_MODE
env variable now that FILTER_WEBHOOKS
can be toggled404
error handler to the APImain
Published by Justintime50 about 3 years ago
Published by Justintime50 about 3 years ago
ALLOWED_BRANCHES
WEBHOOK_SECRET
variable setmock
library in favor of the builtin unittest.mock
library