Releases: Justintime50/harvey
Releases · Justintime50/harvey
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
v0.20.1
- Switches from
sha1
webhook secrets from GitHub tosha256
for increased security and finally adds unit tests for thevalidate_webhook_secret
function
v0.20.0
- Swaps
gunicorn
foruwsgi
for better performance. This switch also fixes the concurrency deadlock in production - Harvey now runs as a daemon which should drastically improve performance
- Drops default processes running from 4 to 2
- Adds a check to ensure the
deployment_type
passed was valid and fails if not
v0.19.0
- Changes name of the PyPI project from
harvey-ci
toharvey-cd
to better match the nature of the application - Consolidates all sqlite database tables into a single database file for better performance and disk savings (to properly migrate to using this new database structure, please run the
utils/consolidate_sqlite_databases.py
script which will migrate and consolidate the old database(s) content to the single unified file)
v0.18.0
Breaking Changes
- Renamed all occurances of
pipeline
todeployment
to unify the language used throughout the project and avoid confusion - The
pipeline
key has been renamed todeployment_type
in the webhook data. A default ofdeploy
has been set where previously there was no default - The
/pipelines/start
endpoint is now called/deploy
- All other
/pipeline
endpoints have been renamed/deployment
Features
- Adds a simple authentication system where endpoints can be protected with the same API key as the webhook secret (uses basic auth)
- Added new
/locks
,/locks/{project_name}
,/projects/{project_name}/lock
, and/projects/{project_name}/unlock
endpoints - Adds
sentry
integration - Performance improvements for sorting & paginating large lists of deployments and locks
- Enforces Docker Compose v2 availability by checking during the app bootstrap process
Bug Fixes
- Fixes a bug where retrieving a lock status may return the wrong value
- Fixes a bug that kills builds when a lock cannot be found (eg: new projects)
Chores
- Moved all
lock
functionality to its own module
v0.17.0
- Overhauled the pipeline logs to provide more details that are easier to read
- Changed the required
harvey.json
file for each project to.harvey.yml
(expected fields/values remain the same) - Sets the default pagination limit down to 20 from 100, adds
PAGINATION_LIMIT
env var to allow customization - Added new
HARVEY_PATH
,GIT_TIMEOUT
,DEPLPOY_TIMEOUT
, andDEPLOY_ON_TAG
env vars for customization - Better syncing of the version string for the release and what appears in logs
- Better error handling around
404
s at the API level - Emojis will now be converted to a fallback string representation in pipeline logs while they will remain emojis in Slack messages
- Various bug fixes and refactoring improvements
v0.16.0
- Added logging with configurable log level
- Use new
docker compose
invocation over olderdocker-compose
- Various code refactor including bug fixes and optimizations, and improved code coverage
- Cleaned up various dead env variables and documentation
- No longer log progress bars of Docker image builds
- Gracefully handles not being able to find a container or list of containers
- Shallow clone repos to 1 commit instead of 10
- Retry pipelines that fail due to local, uncommitted changes present when pulling the repo (closes #38)
- Adds a locking mechanism to deployments when a pipeline is in-flight to avoid crashing Docker when multiple
docker compose
commands are run simultaneously for a single project (closes #58) - Now saves projects to
~/harvey/projects
instead of locally toharvey/projects
- Now saves project_logs to
~/harvey/project_logs
instead of locally toharvey/logs
- Adds a check to ensure there is a
docker-compose.yml
file present- Now supports yaml files ending in both
yml
oryaml
- Now supports yaml files ending in both
- Overhauled the API to allow retrieval of projects in addition to pipelines. We now also store more metadata about each object including a timestamp, the full log, the project name, commit, status, etc
- Fixed various path bugs that wouldn't resolve properly on Windows (used
os.path.join()
) - Changed all datetime/timestamp fields to use
utc
time
v0.15.0
- Adds the ability to pass Harvey configuration data in a
data
field in the webhook instead of the defaultharvey.json
configuration file kept in the repo (either are now options) - Configuration data now properly gets validated (pipeline key and existence)
- Added emojis to the healthcheck messages via Slack
- The
pipelines
andstages
modules were consolidated intopipelines
now that the testing functionality has been removed - Removed the
filter webhook
functionality as it was prohibitively expensive to do correctly due to the vast number of IPs to guard against - Reworked how we pulled json data from webhooks to be more straightforward
- We now use the
docker
Python SDK instead of hitting raw socket endpoints (closes #49) - Adds
gunicorn
for production deployments instead of the development Flask server - Refactors invocations of subprocesses to not use the shell, no longer change directories but invoke commands from within the context they require
- Changes the
compose
key toprod_compose
which now accepts a boolean. We no longer support custom flags to the compose endpoint
- Changes the
- Removes deprecated
/compose
endpoint which has been replaced with the/start
endpoint - Adds a new
healthcheck
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) - Various bug fixes
v0.14.0
Breaking Changes
- Strips away all non-compose logic - Harvey is now exclusively a
Docker Compose
deployment platform (closes #9, closes #15, closes #19, closes #20, closes #22, closes #24, closes #28, closes #44) - Strips away the non-functioning testing framework so that we can focus on deployments instead of the full CI/CD landscape
- Removes the poorly integrated
APP_MODE
env variable now thatFILTER_WEBHOOKS
can be toggled
Other Changes
- Added a
404
error handler to the API - Rebasing repositories now doesn't assume the branch to rebase against is titled
main
- Cleaned up all documentation to reflect the breaking changes
v0.13.1
- Corrected a container naming bug that could make compose containers fail their healthchecks due to mismatched container names
- Small enhancements and cleanup throughout the project