mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
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
This commit is contained in:
parent
2bbf120e2f
commit
5aca2ff9b6
53 changed files with 1356 additions and 111 deletions
47
app/models/provider/github.rb
Normal file
47
app/models/provider/github.rb
Normal file
|
@ -0,0 +1,47 @@
|
|||
class Provider::Github
|
||||
attr_reader :name, :owner, :branch
|
||||
|
||||
def initialize(config = {})
|
||||
@name = config[:name] || ENV.fetch("GITHUB_REPO_NAME", "maybe")
|
||||
@owner = config[:owner] || ENV.fetch("GITHUB_REPO_OWNER", "maybe-finance")
|
||||
@branch = config[:branch] || ENV.fetch("GITHUB_REPO_BRANCH", "main")
|
||||
end
|
||||
|
||||
def fetch_latest_upgrade_candidates
|
||||
Rails.cache.fetch("latest_github_upgrade_candidates", expires_in: 2.minutes) do
|
||||
Rails.logger.info "Fetching latest GitHub upgrade candidates from #{repo} on branch #{branch}..."
|
||||
begin
|
||||
latest_release = Octokit.releases(repo).first
|
||||
latest_version = latest_release ? Semver.from_release_tag(latest_release.tag_name) : Semver.new(Maybe.version)
|
||||
latest_commit = Octokit.branch(repo, branch)
|
||||
|
||||
release_info = if latest_release
|
||||
{
|
||||
version: latest_version,
|
||||
url: latest_release.html_url,
|
||||
commit_sha: Octokit.commit(repo, latest_release.tag_name).sha
|
||||
}
|
||||
end
|
||||
|
||||
commit_info = {
|
||||
version: latest_version,
|
||||
commit_sha: latest_commit.commit.sha,
|
||||
url: latest_commit.commit.html_url
|
||||
}
|
||||
|
||||
{
|
||||
release: release_info,
|
||||
commit: commit_info
|
||||
}
|
||||
rescue => e
|
||||
Rails.logger.error "Failed to fetch latest GitHub commits: #{e.message}"
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def repo
|
||||
"#{owner}/#{name}"
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue