- Make
PRESENCE_CHECK_TIMEOUTconfigurable via environment variable
- Shipit-engine now requires application to be at least on Rails 8.1.1.
- Remove dependency on SaasC that is lo longer maintained. A vanilla CSS file now ships with shipit-engine. Users may see slightly different colors compared to before.
- Handle GithubOrganizationUnknown in GithubSyncJob by logging a warning and marking the stack as inaccessible.
- Add dry-run flag for testing environments
- (bugfix) Fix NoMethodError in continuous delivery delayed banner when
next_commit_to_deployis nil
- Return 422 and log when a webhook is from an unknown (unconfigured) GitHub organization.
- (bugfix) Ensure we always call
bundle config set without, even if the without group is empty
- Use
bundle config set frozen trueinstead of deprecated--frozenflag
- Move git ask pass to env config for improved local development (##1441)
- Fix unbounded memory usage in RefreshCheckRunsJob(#1436)
- Allow explicit configuration of rollback variables (#1432)
- Fix commit statuses (#1424)
- Display banner with optional/default message when deployment checks are triggered (#1422)
- Retry GithubSyncJob when expected_head_sha is not found in the github response. (#1417)
- Suppress ActionView warnings (#1414)
- Allow
shipit.ymlinheritance. (#1393) - Forward deploy custom env variable when rolling back.
- Pass
Shipit::StacktoDeploySpec::FileSystem.newand make it accessible through an accessor. (#1356) - Upgraded Rubocop to 1.48.0
- Upgraded to Rails 8.0
- Upgraded to Sqlite3 2.6.0
- Minimum Ruby version is now Ruby 3.2
- Minimum Ruby version is now Ruby 3.0
- Upgraded to Rails 7.1.1
- Upgraded Octokit to 5.6.1 (#1327)
- Migrate from legacy Rails secrets to credentials (#1326)
- Rails secrets were deprecated in Rails 7.1
- Guide on credentials
- For deployments,
allow_concurrencydefaults to the same value asforce. If wanted, it can be set separately by passing the intended value forallow_concurrencytobuild_deploymethod
- Convert
commit_deployment_statuses.github_idto bigint (#1312) - Allow to lock and archive stacks from the API (#1282)
- Hide API tokens from the user interface after the initial creation (#1298)
- Suppress progress output for git checkout (#1278)
- Make API refresh action match non-API refresh action for stacks (#1277)
- Fix compatibility with Rails 7.0.3.1 (YAML serialized fields). (#1273)
- Allow to abort a task via the API. (#1240)
- Allow to update a Stack
environmentproperty from the API. (#1237) - Increased
teams.slugcolumn from 50 to 255 characters. (#1233) - Upgraded to Rails 7.0
- Minimum Ruby version is now Ruby 2.7
- Suppress git fetch progress output. (#1225)
- Fixup #1219: Suppress detached head advisory. (#1222)
- Suppress initial git clone progress output and detached head advisory. (#1219)
- Don't mark rollback tasks as faulty. (#1207)
- Bump Rails to 6.1.4.1. (#1216)
- Avoid reading the shipit.yml before the repo is fully cloned. (#1215)
- Properly pass the base env to git commands. (#1214)
- check_runs github_updated_at column defaults to nil instead of 0.
- Allow the deploy banner to stretch so that buttons do not get hidden. (#1208)
- Don't mark rollback task as faulty.
- Upgraded to Rails 6.1.
- Fixed Ruby 3.0 compatibility.
- The minimum required ruby version is now 2.6.
- Give precedence to configured
shell_pathswhen executing commands. (#1186) - Support for sending signed webhooks with the secret key. (#1150)
- No longer assume
masteris the default branch. (#1149) - Support multiple GitHub organisations. (#1151)
- Allow changing the branch name through the API. (#1185)
- Use a Redis cache to store task output, instead of
output_chunks(deprecate their use). - Allow to replace the default task execution strategy (#1117).
- Clone repositories with
--recursiveto better handle repos with submodules (#1110). - Added a
deploy.retriesandrollback.retriesproperties (#1109). - Added review stacks, which allow to automatically create a stack when a pull request is opened, and to delete it when the pull request is closed. This allows to test branch on staging like environments (#1102).
- Optimize some queries (N+1).
- Added an API endpoint to update stacks.
- Added an API endpoint to trigger rollbacks.
- Added a power user endpoint
/<org>/<repo>to list all stack of a repository. - Fix the API response serialization for Ruby 2.6.6+ (#1092).
- Prevent gem released unless the
allowed_push_hostmetadata is set in the gemspec (#1037). - Added a new job
ReapDeadTasksJobto support cleanup of jobs that are stuck in running, but report as dead.- This job runs every minute via the cron rake task.
- When running this job for the first time, it may transition old zombie tasks, causing any side-effects to fire, like notifications.
- Limit the size of task output logs to 16 MB (#1041)
- Update omniauth-github to stop using a deprecated authentication method.
- Interpolate variables in the
linkssection of the shipit.yml (#1018).
- Add a statistics page for stacks (#931).
- Permit archival of stacks (#969).
- Expose $DEPLOY_URL when running tasks (#981).
- Handle oversized commit messages (#996).
- Add the deployment_url in GitHub deployment records (#1010).
- Allow applications to register extra handlers for GitHub webhooks (#961).
- Display the configured application name in UI
- Upgraded to Rails 6.0.
- Fix a bug in GitHub API caching causing the cache to grow indefinitely (#935).
- Iterate over 25 rather than 10 commits to try to reconcile force pushed branches (#937).
- Better handle users with only private emails if the permission is available (#922).
- Fix GitHub API status fetching (#928).
- Fix last deployed branch name containing an extra
refs/(#927).
- Fix default ordering of check runs causing retries to display an incorrect status.
- Include stack environment in page title.
- Fix handling of commits with an empty message (#872).
- Fix issue with CSRF protection being enabled on webhook and api controllers.
- Upgrade to Rails 5.2
- Fix a Postgres compatibility issue (#838).
- Record GitHub CheckRuns and display them like statuses.
- Optimize git operations to reduce lock contention.
- Fix kubernetes discovery module to not override user defined tasks.
- Improve GitHub API client management. Won't re-auth constantly if cache is disabled, and will keep the connection pool on re-auth.
- Stop storing outgoing webhooks in the database for efficiency reasons.
- Various thread safety fixes.
- Use a file lock rather than a redis lock for git locking.
- Handle orphan commits (no parents at all).
- Add a feature to push commit statuses on deploy success (experimental).
- Reject commits with missing statuses from the merge queue.
- Set
ROLLBACK=1for rollback commands. - Allow to disable authentication entirely with
SHIPIT_DISABLE_AUTH=1for easier development. - Don't pass OAuth scope to GitHub for the authentication process.
- Use HTTPS protocol for git operations.
- The default gem release method is now compatible with continuous delivery.
- The default gem release method now assume Shipit can push tags back to the origin repository.
- Set the proper origin remote on working directory repositories.
- Fix NoMethodError in CacheDeploySpecJob.
- Always fetch from the remote before a task to ensure any newly pushed tag is present.
- Release the browser extension endpoint.
- Add
titleproperty to tasks to control the task will be displayed in the timeline. - Allow to configure the merge method used by the merge queue.
- Fix compatibility with GitHub Enterprise installations.
- Update omniauth Fix GitHub authentication for enterprise installations.
- Limit delete batches to 50 while purging deliveries to avoid excessive contention.
- Converted Shipit to use the new GitHub Apps API, older installations will have to redo their setup.
- Dropped MRI 2.2 support since it's EOL.
- The deprecated
Shipit.automatically_prepend_bundle_execoption was removed. - Revalidate merge request as soon as they are expired, and not when they could be merged again.
- Allow to configure Shipit to intepret some exit statuses as timeouts instead of regular failures.
- Distinguish deploy timeouts from deploy failures.
- Added blocking statuses. If they are missing or failing, they will prevent deploy even if they were reported on any of the commits in the deploy range.
- Fix shipit.yml updates not being taken into account for the
fetchcommand. - Fix failing membership webhooks for non fully downcase organization names.
- Fix status group links not being disabled when the status url is missing (#742).
- Use GitHub ID to refresh users via API to avoid login escaping issues.
- Improve hook deliveries purge mechanism to reduce database contention.
- Pull requests with pending CI will no longer be rejected immediately from the merge queue, they will remain on the queue until CI completes, or the PR needs revalidating.
- Added optional age limits to pull requests (in commit count and time) after which they will be rejected from the merge queue.
- Fix hook deliveries purge mechanism that wasn't deleting the correct records.
- Change hook deliveries history to only keep 500 for each hooks.
- Fix FetchDeployedRevisionJob failing for stacks with no git cache
- Fix caching of discovered tasks.
- Reconsider all undeployed commits for locking after a rollback has completed (#707).
- Marks deploys that are triggered while ignoring safety features (#699).
- Automatically prepending
bundle execto tasks is deprecated, setShipit.automatically_prepend_bundle_exec = falseto test the future behaviour before it is enforced.
- Fix MRI 2.4 support (attr-encrypted/attr_encrypted#258)
- Add elementary fragment caching to speedup stacks#show
- Expose the
branchfield for stacks. - Fix
index_tasks_by_stack_and_status's order. - Index
commitstable by(sha, stack_id). - Index
pull_requeststable bymerge_status. - Fix Rails 5.1 compatibility issue when
active_record.belongs_to_required_by_defaultis enabled.
- Handle environment hash with symbol keys.
- Fix a race condition allowing for duplicate deploys.
- Upgrade to Rails 5.1
-
More explicit removal of dependent records when destroying a stack. Reduces total amount of calls to database and speed up removal.
-
Automatically lock impacted commits when a revert is merged. This include the reverted commit as well as all its children up to the revert.
-
Allow to lock undeployed commits, to prevent them from being deployed.
-
Pull requests in the merge queue which are closed on Github will be marked as merged/cancelled as appropriate.
-
TASK_ID environment variable is now available to tasks and deploy scripts.
-
Move uncommon tasks to drop down menu.
-
Add a CCMenu compatible API.
-
Implement an optional merge queue, allowing to schedule pull requests to be merged as soon as the targeted branch is clear.
-
Prevent
commit_statusanddeployable_statushooks from firing if the commit is already deployed.
-
Add NPM package publishing support with either yarn or npm.
-
Add a
kubernetessection inshipit.ymlfor first class k8s support (Still alpha). -
Disregard GitHub's Cache-Control max-age directives, because they impose a 60 seconds resolution which is way too slow.
-
Bust caches from a delayed background job to avoid deadlocks on heavy traffic installations.
-
Properly delete statuses when a commit is destroyed.
-
Properly set default env on deploys triggered by continuous delivery.
-
Add
cron:purge_deliveriestask to only keep one month of hook delivery history. -
Add
cron:hourlytask to callcron:rollup,cron:refresh_usersandcron:purge_deliveriestogether.
-
Do not prepend
bundle execto custom tasks ifdepedencies.overrideis set.Otherwise there isn't any way to opt-out from automatic bundler discovery.
-
Command
variablenow allows aselectto take a list of values, rather than a text field. -
Fix stack header CSS when there is many custom tasks.
-
Handle GitHub repositories with no commits at all.
-
Add
deploy-to-gkescript, for deploying to Google Container Engine.