Skip to content

Releases: Justintime50/harvey

v0.21.0

22 Nov 07:11
Compare
Choose a tag to compare
  • Bumps uwsgi from 2.0.20 to 2.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

26 Jul 21:46
Compare
Choose a tag to compare
  • Switches from sha1 webhook secrets from GitHub to sha256 for increased security and finally adds unit tests for the validate_webhook_secret function

v0.20.0

12 Jul 02:37
Compare
Choose a tag to compare
  • Swaps gunicorn for uwsgi 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

22 May 06:12
Compare
Choose a tag to compare
  • Changes name of the PyPI project from harvey-ci to harvey-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

02 May 05:09
Compare
Choose a tag to compare

Breaking Changes

  • Renamed all occurances of pipeline to deployment to unify the language used throughout the project and avoid confusion
  • The pipeline key has been renamed to deployment_type in the webhook data. A default of deploy 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

13 Feb 03:38
Compare
Choose a tag to compare
  • 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, and DEPLOY_ON_TAG env vars for customization
  • Better syncing of the version string for the release and what appears in logs
  • Better error handling around 404s 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

19 Jan 06:50
Compare
Choose a tag to compare
  • Added logging with configurable log level
  • Use new docker compose invocation over older docker-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 to harvey/projects
  • Now saves project_logs to ~/harvey/project_logs instead of locally to harvey/logs
  • Adds a check to ensure there is a docker-compose.yml file present
    • Now supports yaml files ending in both yml or yaml
  • 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

13 Nov 17:48
Compare
Choose a tag to compare
  • Adds the ability to pass Harvey configuration data in a data field in the webhook instead of the default harvey.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 and stages modules were consolidated into pipelines 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 to prod_compose which now accepts a boolean. We no longer support custom flags to the compose endpoint
  • 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

07 Sep 04:35
Compare
Choose a tag to compare

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 that FILTER_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

31 Aug 05:48
Compare
Choose a tag to compare
  • 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