我決定使用亞馬遜雲解決這個任務。 藉助'aws-sdk'創業板,可以輕鬆將文件更改寫入S3在線空間。
然後我用我的CIS下載最新的文件,並將其提交給信息庫,這是一個簡單的Ruby腳本:
require 'git'
require 'aws-sdk'
require 'fileutils'
folder_name = "configs"
begin
g = Git.open(folder_name)
rescue
puts "Cloning repo..."
system("mkdir #{folder_name}")
g = Git.clone("[email protected]", folder_name, :path => ".")
end
g.config("user.name", "GitBot")
g.config("user.email", "...")
g.pull
FileUtils.rm_rf(Dir.glob("#{folder_name}/*"))
s3 = AWS::S3.new
bucket = s3.buckets["bucket name"] if not bucket
bucket.objects.each do |obj|
if obj.content_length > 0
# only files
puts "Writing #{obj.key}"
File.write("#{folder_name}/#{obj.key}", obj.read)
else
puts "Creating folder #{obj.key}"
FileUtils.mkdir_p "#{folder_name}/#{obj.key}"
end
end
begin
g.add(:all => true)
g.commit("Automatic commit from GitBot")
g.push
puts "Successfully pushed updates"
rescue
puts "Nothing to commit"
end
這不是一個完美的解決方案,但對我的使用情況下的偉大工程。
有趣。我從來沒有這樣做過,但我想知道是否可以將github API構建到應用程序中 - 直接將更改寫入github repo,然後使用heroku的後臺任務插件之一從github重新部署觀看更改。 – trh
感謝您的評論。看起來GitHub內置了一個File CRUD API:https://github.com/blog/1498-file-crud-and-repository-statistics-now-available-in-the-api(用於更新:http:// developer.github.com/v3/repos/contents/#update-a-file) – KrauseFx