1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-18 20:59:39 +02:00
Maybe/app/models/upgrader/deployer/render.rb
Zach Gollwitzer 5aca2ff9b6
Add zero-config self hosting on Render (#612)
* v1 of backend implementation for self hosting

* Add docs

* Add upgrades controller

* Add global helpers for self hosting mode

* Add self host settings controller

* Conditionally show self hosting settings

* Environment and config updates

* Complete upgrade prompting flow

* Update config for forked repo

* Move configuration of github provider within class

* Add upgrades cron

* Update deploy button

* Update guides

* Fix render deployer

* Typo

* Enable auto upgrades

* Fix cron

* Make upgrade modes more clear and consistent

* Trigger new available version

* Fix logic for displaying upgrade prompts

* Finish implementation

* Fix regression

* Trigger new version

* Add i18n translations

* trigger new version

* reduce caching time for testing

* Decrease cache for testing

* trigger upgrade

* trigger upgrade

* Only trigger deploy once

* trigger upgrade

* If target is commit, always upgrade if any upgrade is available

* trigger upgrade

* trigger upgrade

* Test release

* Change back to maybe repo for defaults

* Fix lint errors

* Clearer naming

* Fix relative link

* Add abs path

* Relative link

* Update docs
2024-04-13 09:28:45 -04:00

41 lines
1.4 KiB
Ruby

class Upgrader::Deployer::Render
def deploy(upgrade)
if Setting.render_deploy_hook.blank?
return {
success: false,
message: I18n.t("upgrader.deployer.render.error_message_not_set"),
troubleshooting_url: "/settings/self_hosting/edit"
}
end
Rails.logger.info I18n.t("upgrader.deployer.render.deploy_log_info", type: upgrade.type, commit_sha: upgrade.commit_sha)
begin
uri = URI.parse(Setting.render_deploy_hook)
uri.query = [ uri.query, "ref=#{upgrade.commit_sha}" ].compact.join("&")
response = Faraday.post(uri.to_s)
unless response.success?
Rails.logger.error I18n.t("upgrader.deployer.render.deploy_log_error", type: upgrade.type, commit_sha: upgrade.commit_sha, error_message: response.body)
return default_error_response
end
{
success: true,
message: I18n.t("upgrader.deployer.render.success_message", commit_sha: upgrade.commit_sha.slice(0, 7))
}
rescue => e
Rails.logger.error I18n.t("upgrader.deployer.render.deploy_log_error", type: upgrade.type, commit_sha: upgrade.commit_sha, error_message: e.message)
default_error_response
end
end
private
def default_error_response
{
success: false,
message: I18n.t("upgrader.deployer.render.error_message_failed_deploy"),
troubleshooting_url: I18n.t("upgrader.deployer.render.troubleshooting_url")
}
end
end